问题描述:http://www.sdutacm.org/onlinejudge2/index.php/Home/Index/problemdetail/pid/1197.html
#include <iostream>
#include <malloc.h>
using namespace std;
typedef struct Node
{
int data;
struct Node* next;
}Node;
int main ()
{
int n,m,count,length;
cin>>n>>m;
//建表前的初始化
Node *head = (Node*)malloc(sizeof(Node));
head->data = 1;
head->next = NULL;
Node *tail = head;
for( int i=2;i<=n;++i )
{
Node *p = (Node*)malloc(sizeof(Node));
p->data = i;
p->next = NULL;
tail->next = p;
tail = p;
}
tail->next = head; //构成一个环
//游戏前的初始化
count = 1;
length = n;
Node *p = head;
while( length != 1 )
{
if( count == m-1 ) //代表下一个节点为要删除的节点
{
// cout<<"will delete:"<<p->next->data<<endl;
p->next = p->next->next; //删除节点
count = 1;
p = p->next;
length--;
}
else
{
p = p->next;
count++;
}
}
cout<<p->data<<endl;
return 0;
}