1. 程式人生 > >數據結構鏈表

數據結構鏈表

比較 mes end 設計 操作 ace nbsp str 所有

遊戲設計:

技術分享圖片

隨機輸出一組N個2位數,第一步:刪除玩家輸入位置k處的一個數,第二步,輸入一個x位置將上一步刪除的數插入x處;

當所有數,從小到大排列則遊戲結束,並輸出總共所輸入的步驟;

方案一(數組存儲):

#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
using namespace std;

const int N = 20;

//刪除
int del(int (&a)[N], int k)
{
    int temp = a[k - 1
]; if (k < 1 || k > N || temp == 0) return 0; for (int i = k; i < N; i++) { a[i - 1] = a[i]; } a[N - 1] = 0; for (int i = 0; i < N; i++) { cout << setw(3) << a[i]; } return temp; } //插入 void ins(int (&a)[N], int k, int
x) { if (k < 1 || k > N || x == 0) return; for (int i = N - 1; i >= k; i--) { a[i] = a[i - 1]; } a[k - 1] = x; for (int i = 0; i < N; i++) { cout << setw(3) << a[i]; } } //比較 bool match(const int (&a)[N]) { for (int
i = 0; i < N; i++) { for (int j = i + 1; j < N; j++) { if (a[i] > a[j]) return false; } } return true; } //編號輸出 void put() { for (int i = 1; i <= N; i++) { cout << setw(3) << i; } cout << endl; } int main() { int ar[N]; int k = 0; bool Gameover = false; srand(time(NULL)); put(); for (int i = 0; i < N; i++) { ar[i] = 10 + rand() % 89; cout << setw(3) << ar[i]; } while (!Gameover) { static int sub = 0; int key1 = 0, key2 = 0; cout << "請輸入要刪除的位置:"; cin >> key1; put(); int temp = del(ar, key1); cout << "請輸入要插入的位置:"; cin >> key2; put(); ins(ar, key2, temp); sub++; if (match(ar)) { cout << endl << "---------game over" << "------總共完成步驟: " << sub * 2; Gameover = true; } } return 0; }

用數組存放數據,並完成刪除插入操作;

方案二(鏈表存儲):

數據結構鏈表