代码问题,
m %= n;
下面还需要继续更新这个值。
#include<stdio.h>
#include<stdlib.h>
struct Lnode /*定义链表*/
{int number;
int password;
struct Lnode *next;
}Lnode,*p,*q,*head;
int main(void)
{int n; /*n个人*/
int i,j,k,h;
int m; /*初始报数上限值*/
int a[100],r=0;
scanf("%d",&k);
for (h=1;h<=k;h++){
scanf("%d",&n);
scanf("%d",&m);
p=NULL;
q=NULL;
for(i=1;i<=n;i++) /* 建立单链表*/
{if(i==1)
{head=p=(struct Lnode*)malloc(sizeof(struct Lnode));
}
else
{q=(struct Lnode*)malloc(sizeof(struct Lnode));
p->next=q;
p=q;
}
scanf("%d",&(p->password));
p->number=i;
}
p->next=head; /*形成循环链表*/
p=head;
for (j=1;j<=n;j++) /*输出各人的编号*/
{
for(i=1;i<m;i++,p=p->next);
m=p->password;
a[r]=p->number;
r=r+1;
p->number=p->next->number; /*删除报m的节点*/
p->password=p->next->password;
q=p->next;
p->next=p->next->next;
free(q);
}
a[r]=0;
r++;
}
for(i=0;i<r;i++){
if (a[i]!=0)
printf("%d ",a[i]);
else printf("\n");
}
printf("\n\n");
system("pause"); /*等待按任意键退出*/
}