數據結構鏈表
阿新 • • 發佈:2018-02-13
比較 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, intx) { 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 (inti = 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; }
用數組存放數據,並完成刪除插入操作;
方案二(鏈表存儲):
數據結構鏈表