猴子选大王c++结构体
时间: 2023-09-14 11:11:30 浏览: 57
C++ 编写的猴子选大王的程序
猴子选大王问题是一个经典的约瑟夫问题,可以使用循环链表来解决。下面是使用 C++ 结构体实现的代码:
```c++
#include <iostream>
using namespace std;
struct Monkey {
int num;
Monkey *next;
};
int main() {
int n, m;
cout << "请输入猴子的数量和报数的值:";
cin >> n >> m;
Monkey *head, *tail, *p, *q;
head = new Monkey;
head->num = 1;
tail = head;
for (int i = 2; i <= n; i++) {
p = new Monkey;
p->num = i;
tail->next = p;
tail = p;
}
tail->next = head;
p = tail;
while (p->next != p) {
for (int i = 1; i < m; i++) {
q = p;
p = p->next;
}
q->next = p->next;
cout << "出圈的猴子编号:" << p->num << endl;
delete p;
p = q->next;
}
cout << "猴王的编号是:" << p->num << endl;
delete p;
return 0;
}
```
其中,`Monkey` 结构体表示猴子,包括编号和指向下一个猴子的指针。首先创建循环链表,然后按照报数的规则出圈,直到只剩一个猴子,即猴王。最后释放空间,程序结束。
阅读全文