话不多说,直接上代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct Node* LinkList;
struct Node
{
int data;
struct Node *next;
};
//初始化循环链表
LinkList CreateList(int m)
{
LinkList head,p,s;
head=(LinkList)malloc(sizeof(Node));
p=head;
int i=1;
if(m!=0)
{
while(i<=m)
{
s=(LinkList)malloc(sizeof(Node));
s->data=i++;
p->next=s;
p=s;
}
s->next=head->next;
}
free(head);
return s->next;
}
int main()
{
int m,n;
printf("请输入人数:");
scanf("%d",&m);
printf("报到几出局:");
scanf("%d",&n);
LinkList L,p1,p;//L指向第一个节点
p=L=CreateList(m);
while(p!=p->next)
{
for(int i=1;i<n-1;i++)
{
p=p->next;
}//将p指向要输出节点的前一个节点
p1=p->next;//p1指向要删除节点
printf("%d->",p1->data);
p->next=p1->next;
p=p1->next;
free(p1);
}
printf("%d",p->data);
return 0;
}