约瑟夫环数据结构课程设计.docx
《约瑟夫环数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《约瑟夫环数据结构课程设计.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、约瑟夫环数据结构课程设计 约瑟夫环问题设计与实现 摘要 约瑟夫问题是由古罗马著名的史学家Josephus提出的问题演变而来,所以通常称为Josephus问题。改进约瑟夫问题的描述是:编号为1,2,n的n 个人按顺时针方向围坐一圈, 每人有一个密码m(整数),留作其出圈后应报到m后出圈,依次类推,即可求出出列顺序。因此约瑟夫环问题如果采用循环链表则能很好的解决。循环链表的数据结构,就是将一个链表的最后一个节点指针指向第一个结点。出列时,根据密码找到对应的人,打印其编号,将其密码赋值给m后,释放节点,形成新的约瑟夫环,直到所有人出列结束。 关键字:约瑟夫环;循环链表;出列顺序;释放节点; Desi
2、gn and Realization of the Joseph ring ABSTRACT The Joseph problem is the evolution proposed by ancient Rome famous historian Josephus and come, so often referred to as the Josephus problem. Improvement of Joseph problem description is: No. 1, 2,. N, n individuals according to a clockwise direction a
3、round a circle, each with a password of M (integer), keep the ring should be reported after the M ring, and so on, we can calculate the column order. So Joseph circle if using circular linked list can be very good solution. Circulation list data structure, is the last of a node is a pointer to a lis
4、t of the points to the first node. Out, according to the code to find the corresponding person, print the number, the password is assigned to m, release the node, the formation of Joseph ring, until all the people out of the end. Keywords: Joseph ring; circular linked list; the column order release
5、nodes; 目录 1需求分析 (1) 1.1课题内容 (1) 1.2要求 (1) 2概要设计 (1) 3详细设计 (2) 3.1程序中的数据类型 (2) 3.2函数运行过程详解 (3) 4设计和调试分析 (6) 4.1调试中遇到的问题 (6) 4.2经验和体会 (7) 5用户使用说明 (7) 6测试数据和测试结果 (8) 参考文献 (10) 1 需求分析 1.1课题内容: (1)本演示程序中,人数n应为任意的,首先应输入一个值赋给初始报数上限m,程序应能自动保存出列人的序号和将出列的人所持的密码赋给m,再次作为报数上限,如此循环,直至所有人都出列为止。 (2)演示程序以用户和计算机的对话方式
6、执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入相应数据(即每个人所持的密码),每个人的序号由程序自动分配。 (3)程序执行的命令包括: (1)构造链表;(2)输入数据;(3)执行报数,储存出列人的序号,删除出列人的信息以及把出列人的密码赋给m;(4)结束。 (4)测试数据 n7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6,则这正确的出列顺序为6,1,4,7,2,3,5。 1.2 要求: (1)源程序要有适当的注释,使程序容易阅读; (2)函数功能要划分好(结构化程序设计); (3) 可以增加新功能模块; (4) 要提供程序测试方案,程序一定要经得起测试,也要能
7、运行起来, 不能运行的程序是没有价值的。 2 概要设计 该系统采用C语言开发,主要方法是选择合适的程序结构,灵活使用三种程序设计基本结构、函数等编写程序。 21 本程序包含三个模块,对应关系图为: (1)主程序模块; (2)构造链表并输入每个人信息模块; (3)每个人依序出列打印出列顺序并释放结点模块; 2.2 为了实现上述操作,应以单向循环链表为存储结构。 2.3 基本操作: Data_InPut( ) 操作结果:构造链表,初始化每个人的相关信息 Data_OutPut( ) 操作结果:释放指向出列的人的结点,并重新报数 3 详细设计 3.1程序中定义的数据类型 typedef struct
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 约瑟夫 数据结构 课程设计
限制150内