博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

约瑟夫环

Posted on 2009-11-09 13:54  little健健  阅读(361)  评论(1编辑  收藏  举报

 【问题描述】
编号为1,2… n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数, 报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个开始重新从1报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺序。


【基本要求】
(1) 利用单循环链表作为存储结构模拟此过程; (2) 键盘输入总人数、初始报数上限值m及各人密码; (3) 按照出列顺序输出各人的编号。


【测试数据】
m的初值为20;n=7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6(正确的出列顺序为6,1,4,7,2,3,5)。


【实现提示】
此题所用的循环链表中不需要“头结点”。


【选作内容】
用顺序表解决约瑟夫问题。

源程序:

1.链表

2.顺序表

3.另一种想法