#include <stdio.h>
#include<stdlib.h>
typedef struct linklist{
int data;
struct linklist *next;
}linklist;
linklist*create(int m)//尾插
{
int data;
linklist *p,*s,*head;
head=(linklist*)malloc(sizeof(linklist));
p=head;
for(int i=1;i<=m;i++)
{
s=(linklist*)malloc(sizeof(linklist));
s->data=i;
p->next=s;
p=s;
}
p->next=head->next;//构建一个环
return head;
}
void num(linklist *head,int n,int m)//删除
{
int i,j;
linklist *p,*q;
p=head->next;//p为头指针
for(j=1;j<=n;j++)
{
for(i=1;i<(m-1);i++) //删除m,找m-1
p=p->next;
q=p->next;
printf("%d",q->data);
m=q->data;
p->next=q->next;//删除m
p=q->next;
free(q);//释放空间q
}
}
int main()
{
int n,m;
linklist *head;
printf("请输入总人数:\n");
scanf("%d",&n);
printf("请输入密码:\n");
scanf("%d",&m);
head=create(n);
printf("出列的顺序是:\n");
num(head,n,m);
return 0;
}