c++实现
时间: 2023-09-13 09:12:34 浏览: 41
以下是使用 C++ 实现猴子选大王功能的代码,同样使用循环链表来模拟猴子围成一圈的情况。其中,n 表示猴子的数量,kill 表示每轮报数到 3 的猴子编号,最后返回的是剩下的猴子编号。
```cpp
#include <iostream>
using namespace std;
struct Node {
int data;
Node* next;
Node(int x): data(x), next(NULL) {}
};
int king(int n) {
Node* head = new Node(1);
Node* pre = head;
for (int i = 2; i <= n; i++) {
Node* cur = new Node(i);
pre->next = cur;
pre = cur;
}
pre->next = head;
Node* cur = head;
Node* pre2 = NULL;
while (cur->next != cur) {
for (int i = 1; i <= 3; i++) {
pre2 = cur;
cur = cur->next;
}
pre2->next = cur->next;
delete cur;
cur = pre2->next;
}
int result = cur->data;
delete cur;
return result;
}
int main() {
int n = 5;
cout << king(n) << endl;
return 0;
}
```
例如,执行 king(5) 就可以得到最后剩下的猴子编号:
```cpp
cout << king(5) << endl; // 输出 3
```