13个人围成一圈,从第一个人开始顺序报号1、2、3。凡报到3者退出圈子。找出最后留在圈子的人原来的号码。

2020-05-09 社会 85阅读
#include
#include
int main()
{
struct king{
int data;
struct king *next;
};
int i,m,n;
scanf("%d%d",&n,&m);
struct king *p,*head,*t,*tmp;
head=(struct king*)malloc(sizeof(struct king));
head->next=NULL;
head->data=1;
p=head; //循环链表
for (i=2;i<=n;i++)
{
t=(struct king*)malloc(sizeof(struct king));
t->data=i;
t->next=NULL;
p->next=t;
p=p->next;
}
p->next=head;
p=head; //删除链表
while(p->next!=p)
{
for(i=1;ip=p->next;
tmp=p->next;
p->next=p->next->next;
p=tmp->next;
free(tmp);
}
printf("%d",p->data);
getchar();
getchar();
return 0;
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com