13个人围成一个圈,从第1个人开始顺序报数1,2,3.凡报到3者退出圈子.找出最后留在圈子中的人原来的序号.要求用链表实现.

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 07:50:50
13个人围成一个圈,从第1个人开始顺序报数1,2,3.凡报到3者退出圈子.找出最后留在圈子中的人原来的序号.要求用链表实现.

13个人围成一个圈,从第1个人开始顺序报数1,2,3.凡报到3者退出圈子.找出最后留在圈子中的人原来的序号.要求用链表实现.
13个人围成一个圈,从第1个人开始顺序报数1,2,3.凡报到3者退出圈子.找出最后留在圈子中的人原来的序号.
要求用链表实现.

13个人围成一个圈,从第1个人开始顺序报数1,2,3.凡报到3者退出圈子.找出最后留在圈子中的人原来的序号.要求用链表实现.
#include
typedef struct game
{
\x09int n;
\x09struct game *next;
}Node,*List;
int main()
{
\x09List L=new Node,p=L,q;
\x09//初始化循环链表
\x09for(int i=1;inext=new Node;
\x09\x09p->n=i;
\x09}
\x09p->next=L->next;
\x09//从L->next开始
\x09p=L->next;
\x09while(L->next->next!=L->next)
\x09{
\x09\x09p=p->next;
\x09\x09q=p->next;//q指向要退出的,p指向前一个节点
\x09\x09p->next=q->next;//退出该人
\x09\x09if(q==L->next)//如果退出的节点是接在头结点后面则修改头结点next
\x09\x09{
\x09\x09\x09L->next=q->next;
\x09\x09}
\x09\x09p=q->next;
\x09}
\x09printf("%d",L->next->n);
}