13 个人围成一圈,从第一个人开始顺序报号 1 、 2 、 3,凡是报到 3 的人退出圈子。最后留的人是几号?(链表)
#include <stdio.h>struct stu
{
int num;
int number;
struct stu *next;
};
main()
{
struct stu a[14],*head,*p;
int i,j=0,k=2,m=0;
for(i=1;i<14;i++)
(a[i].num)=i;
for(i=1;i<14;i++)
(a[i].number)=i;
head=&a[1];
for(i=1;i<13;i++)
(a[i].next)=&a[i+1];
(a[13].next)=0;
p=head;
for(i=1;i<14;i++)
if(i%3==0)
{
(a[i-1].next)=&a[i+1];
(a[i].num)=1;
}
loop: for(i=1;i<14;i++)
{
if((a[i].num)==0)
j=j+1;
if((j+1)%3==0)
{
p=p->next->next;
(a[i].num)=k;
}
k=k+1;
for(i=1;i<14;i++)
{
if(a[i].num==0)
m=m+1;
}
if(m!=3)
goto loop;
else
printf("最后一个人是:%d",p->next->next);
}
}
这个错到那里了,想了好半天没想出来。。。求帮助!