- 2
- 0
- 约3.86千字
- 约 7页
- 2024-03-15 发布于广东
- 举报
线性表之循环链表实现约瑟夫环
今天我们来学习利用循环链表,解决经典的约瑟夫环问题。题意是:已知n个
人(分别用编号1,2,3,…,n表示)围坐在一张圆桌周围,从编号为k的
人开始顺时针报数,数到m的那个人出列;他的下一个人又从1开始,还是
顺时针开始报数,数到m的那个人又出列;依次重复下去,直到圆桌上剩余一
个人。如图1所示,假设此时圆桌周围有5个人,要求从编号为3的人开始
顺时针报数,数到2的那个人出列:
1
图循环链表实现约瑟夫环
根据以上游戏规则,出列顺序依次为:
编号为3的人开始数1,然后4数2,所以4先出列;
4出列后,从5开始数1,1数2,所以1出列;
1出列后,从2开始数1,3数2,所以3出列;
3出列后,从5开始数1,2数2,所以2出列;
最后只剩下5自己,所以5胜出。
约瑟夫环问题有多种变形,比如顺时针报数改为逆时针报数(常用单循环链表实
现),亦或顺时针报数与逆时针报数
原创力文档

文档评论(0)