数据结构课程设计报告约瑟夫环

发布 2022-10-05 20:01:28 阅读 7389

课程设计报告。

课程设计名称:数据结构课程设计。

课程设计题目:约瑟夫环。

院(系):电信学院。

专业:计算机应用科学。

目录。1 课程设计介绍 1

1.1 课程设计内容 1

1.2 课程设计要求 1

2 课程设计原理 2

2.1 课设题目粗略分析 2

2.2 原理图介绍 3

2.2.1 功能模块图 3

2.2.2 流程图分析 4

3 数据结构分析 7

3.1 存储结构7

3.2 算法描述 7

4 调试与分析 9

4.1 调试过程 9

4.2 程序执行过程 10

参考文献 15

附录(关键部分程序清单) 16

设计程序,系统主要功能如下:

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

试设计一个程序求出出列顺序。

1.参考相应的资料,独立完成课程设计任务书。

2.交规范课程设计报告和软件**。

根据课设题目要求,拟将整体程序分为四大模块。此四个模块相互独立,没有嵌套调用的情况,以下是四个模块的大体分析:

1. main()函数是主要的控制函数,main()函数主要负责存储用户输入的基本数据以及调用其他子函数模块,在main()函数中还存在一个比较小的函数模块exit(0),该函数模块负责终止程序运行,另外还有两个子函数模块,分别是random()函数模块与solid()函数模块,这两个函数模块分别各自负责自己所要处理的数据以及输出功能;

2. 在程序运行之后,在程序主界面出现之后,当用户自己输入了自己想要实现的功能模块所在的数字选项后,立即进入主函数模块之中,当用户输入了所有的必要数据之后,按照用户选定的数字选项所要实现的功能调用相应的子函数;

3. 如果用户选择的是系统随机产生密码的选项,则main()函数就调用random()子函数模块,在random()函数模块中,将会随机产生各个参与者的密码,并且同时建立链表来存储、处理这些数据,在完成了所有的操作之后,random()函数就将输出结果,反之,如果用户选择的是用户自己输入密码的选项,则main()函数就调用solid()函数模块,在solid()函数模块中,将会提醒用户自己一个个的输入每个参与者的密码,与此同时建立链表来存储、处理这些数据,在完成了所有的操作之后,solid()函数就将输出结果。

图2.1 功能模块图。

1.如图2.2,random()函数的执行过程如下;ny

图2.2 random()函数流程图。

2.如图2.3,solid()函数的执行过程如下;ny

图2.3 solid()函数流程图。

3.如图2.4,main()函数的执行过程如下。ny

图2.4 main()函数流程图。

图3.1 数据存储结构。

1. 用户输入数据;

while(scanf("%d",&p)!=eof)

2. random()函数随机产生各个参与者的密码,用户在此函数中输入第一个要报的数,此函数之后会排好各个参与者的出列顺序;

or(i=1;i<=n;i++)

key=rand()%100;

printf("第%d个人的密码:%d",i,key);

s=p; p=(list *)malloc(sizeof(list));创建新的结点。

s->next=p;

p->num=i;

p->code=key;

p->next=head->next;

p=head;

head=head->next;

free(p); 释放头结点。

p=head;

dowhile(p!=head);

printf("输入第一个报的数:");

scanf("%d",&key);

3. solid()函数提示用户输入各个参与者的密码及第一个要报的数,并且排好各个参与者的出列顺序。

for(i=1;i<=n;i++)

scanf("%d",&key);

printf("第%d个人的密码:%d",i,key);

s=p; p=(list *)malloc(sizeof(list));创建新的结点。

s->next=p;

p->num=i;

p->code=key;

printf("请输入密码:")

p->next=head->next;

p=head;

head=head->next;

free(p); 释放头结点。

p=head;

dowhile(p!=head);

printf("输入第一个报的数:");

scanf("%d",&key);

在调试程序是主要遇到一下几类问题:

1.调试过程中,曾出现过缺少分号、括号之类的错误,还出现过运算顺序颠倒,致使运算出现了错误,在经过仔细的检查并且向人请教,终于得出了正确结果。这次的课程设计的**比较冗长,所以等有了解题思路后,把**都写上后难免会有很多错误。

当第一次把整个程序写好后运行,出现了很多错误。不过经过一点点的改正,错误也慢慢地变少。这也说明做事要认真,尤其做计算机这方面工作的时候,因为计算机不容许一点点的错误,有了一点小错误和有一个大错误在计算机看来都是一样的,都不会得到结果。

有些小错误,比如说少了个分号,变量忘了定义,数据溢出等都是些小错误,但也不能松懈。因为要注意的地方很多,经过多次尝试,问题也就自然而然的解决了,而且以后遇到这方面的问题都会觉得比较得心应手。

2.在随机设置每个结点的key时也曾是个问题,因为我做的随机函数一直都用不好,要不是每次随到的都是一样的,要么就是每次随到的数都很大,后来通过学长的耐心讲解才得以解决。在调试的过程中,类的优势很明显,能很简单的把问题解决,而不需要使用的其他的一些比较复杂的方法。

欢迎进入约瑟夫环问题求解系统系统使用说明:

1. 进入程序主界面后,会出现三个选项,按1则是随系统随机产生的密码进行该问题求解,按2则是随用户自己输入的密码进行该问题求解,按3则是退出系统;

2. 选定了进行方式后,输入该问题所涉及的总人数,如果用户按了1,则随机产生密码,用户则只再需要输入第一个人要报的数即可,如果用户按了2,则是用户自己手动输入密码,输入完了所有人的密码后,之后再输入第一个人要报的数;

3. 随着程序的运行,结果就会随之出来,随后进入下一次该问题求解进程,直到用户自己选择退出该程序,该程序才会结束。

1] 严蔚敏,吴伟民。数据结构[m].北京:清华大学出版社,2007.

2] 张长海,陈娟。c程序设计[m].北京:高等教育出版社,2004.

3] 谭浩强。c程序设计[m].北京:清华大学出版社,2005.

4] 《数据结构》(用面向对象方法与c++描述),殷人昆等,清华大学出版社。

5] 《算法与数据结构习题精解和实验指导》,宁正元等,清华大学出版社。

6] 张乃孝,裘宗燕。数据结构c++与面向对象的途径。北京:高等教育出版社,1998

7] 周云静.数据结构习题解析与上机指导.北京:冶金工业出版社,2004

8] 陈慧南.数据结构—c++语言描述.北京:人民邮电出版社,2005

9] 严蔚敏,吴伟民.数据结构.北京:清华大学出版社,1997

程序**。#include<>

数据结构约瑟夫环课程设计报告

滁州学院数学系。课程设计报告。设计名称 约瑟夫环。姓名 杨凤武。小组成员 卢琼,周丽,杨凤武。专业班级 09信息与计算科学一班。指导老师 袁万莲。设计时间 2010 2011学年度第二学期 指导教师评语 指导教师签名。年月日。一 课程设计目的。1 掌握循环链表的建立。2 熟悉循环链表的操作。3 加深...

数据结构课程设计报告

东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...

数据结构课程设计报告

设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...