《数据结构》课程设计题目(C++)刘新 320130938311题目 1:猴子选王(学时:3)一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子( m个)按照 1-m 的顺序围坐一圈,从第 1 开始数,每数到第 n 个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。要求: m及 n 要求从键盘输入,存储方式采用向量及链表两种方式实现该问题求解。/* Data Structure Experiment - Project 1 Author: Bird Liu (Liu Xin) Created Date: 2015-03-08 */ #include #include #include using namespace std; /* Class Definition */ class Monkey { public: Monkey() {flag = 1;}; Monkey(int num) {initNum = num; flag = 1;}; void setInitNum(int num); void setTempNum(int num); void setFlag(int num); int getInitNum(); int getTempNum(); int getFlag(); Monkey* next; Monkey* last; private: int initNum, tempNum; int flag; }; /* Class Functions Definition*/ void Monkey::setInitNum(int num) { initNum = num; } void Monkey::setTempNum(int num) { tempNum = num; } void Monkey::setFlag(int num) { flag = num; } int Monkey::getInitNum() { return initNum; } int Monkey::getTempNum() { return tempNum; } int Monkey::getFlag() { return flag; } /* Vector Function */ int runWithVector() { /* Initilize Monkey Group */ int m; cout << "Please input m: "; cin >> m; if (m < 3) { cerr << "Not allowed!" << endl; exit(1); } Monkey monkeyGroup[m]; for (int i = 0; i < m; i++) { monkeyGroup[i].setInitNum(i+1); } vector monkeyCircle; vector ::iterator iter; for (int i = 0; i < m; i++) { monkeyCircle.push_back(monkeyGroup[i]); } /* Processing */ int n, leftCount; cout << "Please input n: "; cin >> n; leftCount = m; if (n < 1) { cerr << "Not allowed!" << endl; exit(1); } while (1) { if (leftCount >= n) { monkeyCircle.erase(monkeyCircle.begin() + n - 1); ...