13个人围成一圈,从第一个人开始顺序报数,1,2,3。 凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用循环链表处理。
作者:互联网
#include <stdio.h>
#include <stdlib.h>
#define N 13
struct per
{
int number;
int next;
}link[N+1];
int main(int argc, char *argv[])
{
int i;
for(i=1;i<=N;++i)
{
if(i==N)
link[i].next=1;
else
link[i].next=i+1;
link[i].number=i;
}
int j=N;
i=0;
int count=0;
while(count<N-1)
{
while(i<3)
{
j=link[j].next;
if(link[j].number)
{
i++;
}
}
if(i==3)
{
printf("出圈=%d\n",link[j].number);
link[j].number=0;
count++;
i=0;
}
}
for(i=1;i<=N;i++)
{
if(link[i].number)
printf("%d",link[i].number);
}
printf("\n");
return 0;
}
标签:count,13,int,圈子,number,next,链表,link,printf 来源: https://blog.csdn.net/qq_54713933/article/details/118638470