文档详情

数据结构约瑟夫环课程设计实验报告.doc

发布:2017-08-29约4.21千字共7页下载文档
文本预览下载声明
成绩 *******学院 课 程 设 计 报 告 课 程 名 称 数据结构课程设计报告 专 业 班 级 学 生 姓 名 学 号 设 计 题 目 约瑟夫环 指 导 教 师 设计起止时间: 年 月 日至 年 月 日 任务书 1.课程设计背景: 数据是计算机化的信息,它是计算机可以直接处理的最基本和最重要的对象。无论是进行科学计算或数据处理、过程控制以及对文件的存储和检索及数据库技术应用等,都是对数据进行加工处理的过程。 因此,要设计出一个结构好效率高的程序,必须研究数据的特性及数据间的关系及其对应的存储表示,并利用这些等性结合相关编程技术,运用合适、熟练的方法,才能设计出符合要求、可操作性强、有利用价值的应用程序。 2.课程设计的要求和内容: 编号为1,2… n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个开始重新从1报数,如此下去,直至所有人全部出列为止总人数、初始报数上限值m及各人密码 2011年6月20号 2011年6月21号至2011年6月22号 2011年6月23号 2011年6月24号 系统分析与设计阶段 程序编制与调试阶段 答辩和考核 设计报告和书写说明书 约瑟夫环分析与设计 对约瑟夫环进行编程 目 录 一、题目设计与分析 …………………………………………………… 4 1.1问题描述 ……………………………………………………… 4 1.2采用类c语言定义相关的数据类型 ………………………… 4 1.3各模块的伪码算法 …………………………………………… 4 二、流程图 ………………………………………………………… 5 三、源程序清单 ……………………………………………………… 6 四、调试过程、运行结果……………………………………………… 9 五、程序有待改进的地方……………………………………………… 10 六、设计收获和建议 ………………………………………………… 10 一、题目设计与分析 1.1问题描述 关于这次题目的设计,根据题目的要求,主要用了一个单循环链表作为存储结构。首先是进行一系列的定义结点,其中就有包括每个人的密码和编号。然后有空链表的创建和循环链表的初始化。在这里,我们将输入每个人密码的步骤放在循环链表的初始化里,在初始化链表时从键盘输入密码和直接给每个人进行编号,而不是在主函数中进行。 然后在主函数里面主要就是实现约瑟夫环的运行,从第一个开始,找到对应上限值的的人,然后输出编号,将头指针指向下一个结点,将该编号人员的密码赋值为新上限值,然后清空该结点的数据,一直这样的运行,直到所有结点都被清空,就完成了约瑟夫环的运行。 在设计的前期,本是设计将密码输入的这一部分放在主函数之中去执行,而建立单循环链表是单独的一个函数,但是无法实现将数据从主函数键入切能被准确使用,于是后改成在初始化链表的时候键入密码,从而达到目标。 1.2采用类c语言定义相关的数据类型 typedef struct Node { int password; //每个人持有的密码 int num; //人员的编号 struct Node *next; //指向下一个节点 }Node,*Link; 1.3各模块的伪码算法 InitList(Link L) 操作结果:构造一个空的线性表L (Node *)malloc(sizeof(Node) 动态分配内存存储空间 Creater(int n,Link L) 初始化链表,初始化人员编号和输入每个人的密码 Creater(n,L) 建立一个循环列表,赋予初始编号和输入每个人的密码,构成一个约瑟夫环 三、源程序清单 #includestdio.h #includestdlib.h typedef struct Node { int password; int num;
显示全部
相似文档