struct list//建立壹個結構體,包括每個人的編號,密碼和下壹級的指針
{
int id;
struct list *next;
};
list* input(int n)//鏈表的初始化
{
list *p,*q,*l;
int i,m;
p=new list;
l=new list;
l->next=NULL;
p=l;
p->id=1;//第壹個人的初始化
for(i=2;i<=n;i++)//第二個人到第num個人的初始化
{
q=new list;
q->id=i;
q->next=NULL;
p->next=q;
p=q;
}
p->next=l;//使表尾指向表頭,成循環鏈表
return p;
}
int main()
{
int num,m1,i;
list *q,*p;
printf("輸入人數:");
while(scanf("%d",&num)!=EOF)
{
printf("密碼為:");
scanf("%d",&m1);
p=input(num);
printf("最後壹人序號為:");
while(p->next!=p)
{
for(i=1;i<=m1;i++)
{
q=p;
p=p->next;
}
q->next=p->next;
delete p;
p=q;
}
printf("%4d",p->id);
delete p;
printf("\n");
}
}