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

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/28 02:28:43
13个人围成一个圈,从第1个人开始顺序报数1,2,3.凡报到3者退出圈子.找出最后留在圈子中的人原来的序号.要求用链表实现.
xS]N@KUAnܐ8'z^RЕ؉T(b~jRUiT TBj0Ugܢ^}7|;;3L^z _n1eK޽_]e"o ~;.GxOiAʦ!&؃l`[4\ 4,h:z ϻT]r&p+\u7>ܜ {]dsE1"myuVWKjYeSX)1|;ܗ^D)hܜ e2WzI 4l415G)BAM!ѕd vT?w_^T)EDJ]󼦠иN^MEq,{ ZUfGVI) ]e h~ c@Z* l_y.}XxHPQY4)EmLcKL2y7ϼ|rqO>9lTr BmB3UHܳҜ>M`NE-O?[j-

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);
}