、用指针完成下面程序:有n个人围成一圈,顺序排号,从第一个人开始报数(从1-3报数),凡报到3的退出圈子,请编程求出最后留下的是原来的第几号的那位.

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/15 01:30:56
、用指针完成下面程序:有n个人围成一圈,顺序排号,从第一个人开始报数(从1-3报数),凡报到3的退出圈子,请编程求出最后留下的是原来的第几号的那位.、用指针完成下面程序:有n个人围成一圈,顺序排号,从

、用指针完成下面程序:有n个人围成一圈,顺序排号,从第一个人开始报数(从1-3报数),凡报到3的退出圈子,请编程求出最后留下的是原来的第几号的那位.
、用指针完成下面程序:有n个人围成一圈,顺序排号,从第一个人开始报数(从1-3报数),凡报到3的退出圈子,请编程求出最后留下的是原来的第几号的那位.

、用指针完成下面程序:有n个人围成一圈,顺序排号,从第一个人开始报数(从1-3报数),凡报到3的退出圈子,请编程求出最后留下的是原来的第几号的那位.
人的编号是从1开始的
#include
#include
struct peo{
int dat;
struct peo *next;
};
int main()
{
int i,n;
struct peo *head,*tail;
scanf("%d",&n);
head=(struct peo *)malloc(sizeof(struct peo));
head->dat=1;
tail=head;
tail->next=head;
for(i=2;inext=(struct peo *)malloc(sizeof(struct peo));
tail->next->dat=i;
tail=tail->next;
tail->next=head;
}

while(head->next!=head){
head=head->next;
tail=head;
head=head->next;
head=head->next;
free(tail->next);
tail->next=head;
}
printf("%d\n",head->dat);
return 0;
}