1、 课程设计说明书 NO.1 JOSEPH 环环 1、课程设计目的课程设计目的 本次课程设计的目的就是要达到理论与实际的应用相结合学会数据的组织方法,能把 现实世界中的实际问题在计算机内部表现出来,能够提高学生的思维能力和专业素质的提 高,对学生基本程序设计素质的培养和为以后工作打下了坚实的基础。加深对 C 语言基本 语言要素和控制结构的理解,掌握语言的基本内容及程序设计的基本方法与编程技巧。 能够熟练地掌握在系统上编辑、编译、连接和运行 C 程序的方法。通过设计一个完整程序, 掌握数据结构的算法编写、类 C 语言算法转换成 C 程序并上机调试的基本方法。能够运用 C 语言知识对数据库中的重点内
2、容进行解决。 2、课程设计方案论证课程设计方案论证 2.1 程序简介程序简介 编号是 1,2,,n 的 n 个人按照顺时针方向围坐一圈,每个人只有一个密码(正整 数) 。 一开始任选一个正整数作为报数上限值 m,从第一个仍开始顺时针方向自 1 开始顺序报 数,报到 m 时停止报数。报 m 的人出列,将他的密码作为新的 m 值,从他在顺时针方向的 下一个人开始重新从 1 报数,如此下去,直到所有人全部出列为止。设计一个程序来求出 出列顺序。 其中主要功能分为三项: (1)要求使用单向循环链表模拟过程。 (2)输入报数上限值 m 和人数上限值 n,密码值均设定为正整数。 (3)用户输入 Josep
3、h 的必要数据,并显示出列顺序。 各个功能模块有: (1)主函数模块:初始化图形界面,实现软件功能。 (2)单向循环链表创建模块:用循环链表表示 joseph 环。 (3)输入子模块:对用户输入数据进行处理。 2.2 数据结构设计数据结构设计 Joseph环的具体含义是编号为 1,2,n的 n个人按顺时针方向围坐一圈,每人 持有一个密码(正整数) 。一开始任选一个整数作为报数上限值,从第一个人开始顺时针 课程设计说明书 NO.2 自 1 开始顺序报数,报到 m的人出列,践踏的密码之作为新的 m值,从它在顺时针方向 上的下一个人开始重新从 1 开始报数,如此下去,直到所有人全部都出列为止。简单的
4、了 解程序后我们可以知道此 joseph环运用单向的数据结构循环链表存储结构。 在链式存储结 构中,因为最后一个元素没有后继,其结点的指针域为空,若在此标记第一个元素的存储 地址,则形成单向循环链式存储结构。选择不同的影响算法的效率。所以要正确的选择存 储结构,即单向循环链式存储结构。 数据的逻辑结构为线性结构;数据的物理结构分为链式结构, 顺序存储的结构特点是 逻辑顺序与物理顺序一致,可以随机存储,但有缺点就是插入和删除元素要伴随着大量元 素的移动,并且存储空间是预先分配的,不灵活,存在空间浪费,表的存储空间难扩充。 此次通过对问题的分析我们可以较好的得出约瑟夫环的解决问题, 而且我们可以通过单循 环链表能较好的解决约瑟夫环的问题。在建立循环链表时,输入决定约瑟夫环的大小。与 匹配的结点数也会变化,因此要进行动态内存分配。 2.3 设计思路和算法设计设计思路和算法设计 2.3.1 设计思路设计思路 要解决 JOSEPH 环问题,需要建立一个循环单链表,然后输入要建立结点的个数,在 每个结点输入一个密码,