数据结构约瑟夫环课程设计实验报告.doc
文本预览下载声明
成绩
*******学院
课 程 设 计 报 告
课 程 名 称 数据结构课程设计报告
专 业
班 级
学 生 姓 名
学 号
设 计 题 目 约瑟夫环
指 导 教 师
设计起止时间: 年 月 日至 年 月 日
任务书
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;
显示全部