c语言圈子
发布时间: 2023-02-27 02:46:45
Ⅰ C语言编程:有n个人围成一圈,按顺序从1到n编号。从第一个人开始,报到3的人退出圈子。
这个问题叫约瑟夫环,就是一群人围成一圈,从第一个人开始,报到3的出列,看最后留下谁。
这个可以用循环链表来实现,你也可以网络下,网络里有许多关于约瑟夫环的问题!
这个是我以前写的代码,你可以参考下,n取的10
#include
struct
serial
{
int
num;
struct
serial
*next;
};
void
main()
{
int
i;
struct
serial
peo[100],*p,*q;
for(i=0;i<10;i++)
peo[i].num=i+1;
for(i=0;i<9;i++)
peo[i].next=&peo[i+1];
peo[9].next=peo;
q=p=peo;
while(p!=p->next
)
{
for(i=0;i<2;i++)
{
q=p;
p=p->next;
}
q->next
=p->next
;
printf("被删除的元素:%-4d\n",p->num);
p=q->next
;
}
printf("\n最后报号出来的是原来的:%d\n",p->num);
getchar();
}
热点内容