Joseph(约瑟夫、约瑟夫环)问题
Joseph问题为:设编号为1,2,3...n的n个人围坐一圈,约定编号为k(1<=k<=n)的人开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,知道所有人出列为止,
由此产生一个出队编号的序列
。
n=5,即有5个人
k=1,从第一个人开始报数
m=2,数2下
提示:
用一个不带头节点的循环列表来处理Joseph问题:先构成一个有n个节点的单循环链表,然后由k节点起从1开始计数,计到m时,对应节点从链表中删除,然后再从被删除节点的下一个节点又从1开始计数,直到最后一个节点从链表中删除算法结束。
出圈顺序:
2->4->1->5->3
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg