#include <iostream>
using namespace std;
struct node {
int data;
struct node* next;
};
int main() {
int n, m, count, j = 1;
int answer[100];
struct node* head, * tail, * p, * q;
head = (struct node*)malloc(sizeof(struct node*));
head->next = NULL;
while (1) {
cout << "输入n和m!\n";
cin >> n; cin >> m;
if (n == 0 || m == 0)
{
free(head);
break;
}
else {
tail = head;//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
for (int i = 0; i < n; i++) { //尾插法!
//q = tail;
p = (struct node*)malloc(sizeof(struct node*));
p->data = i + 1;
tail->next = p;
p->next = head->next;//切记不要忘记该步骤!形成循环链表!
//将p.next也就是最后一个node的next指向head的next结点也就是head的下一个结点也就是头结点!
tail = p;//将tail定为最后一个!
}
q = tail;//注意是tail而不是head!!因为head没有数据,是头结点!而不是存储数据的首结点!
p = head->next;
count = 1;
while (p != q) {
if (count == m) {
q->next = p->next;
free(p);
p = q->next;//!注意别忘记了!
count = 1;//!注意别忘记了!
}
else {
q = p;
p = p->next;
count++;
}
}
//head->next = q;//此处是保留循环链表!若不需要可删去!
answer[j] = p->data;
j++;
free(p);
head->next = NULL;
}
}
for (int c = 0; c <= j; c++) {
cout << "大王为: " << answer[c] << endl;
}
return 0;
}
1> 已启动生成: 项目: Project9, 配置: Debug Win32
1>plorg.cpp
1>D:\visual studio\C++练习项目\Project9\Project9\plorg.cpp(1,1): warning C4335: 检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式
1>D:\visual studio\C++练习项目\Project9\Project9\plorg.cpp(1,10): warning C4067: 预处理器指令后有意外标记 - 应输入换行符
1>MSVCRTD.lib(exe_main.obj) : error LNK2019: 无法解析的外部符号 _main,函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中引用了该符号
1>D:\visual studio\C++练习项目\Project9\Debug\Project9.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>已完成生成项目“Project9.vcxproj”的操作 - 失败。
生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个