.Joseph环课程设计

.Joseph环课程设计

ID:39445067

大小:261.00 KB

页数:10页

时间:2019-07-03

.Joseph环课程设计_第1页
.Joseph环课程设计_第2页
.Joseph环课程设计_第3页
.Joseph环课程设计_第4页
.Joseph环课程设计_第5页
资源描述:

《.Joseph环课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、目录1.需求分析说明1.Joseph环的总体功能要求2.各功能模块的功能描述3.需要测试的数据2.概要设计说明1.程序流程图2.模块调用图3.详细设计说明1.主函数模块2.节点数据结构体定义模块3.单向循环链表创建模块4.结点删除模块5.输入子模块4.调试分析5.用户使用说明6.课程设计总结7.测试结果8.参考书目一、需求分析说明1.Joseph环的总体功能要求:Joseph环的总体目标:在MicrosoftVisualC++6.0的开发环境下,利用所学C语言和数据结构的相关知识,编写约瑟夫环(Joseph)问题的程序,

2、要求如下:编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。其中的功能主要分为四项:(1)界面友好,易与操作。(2)要求使用单向循环链表模拟过程(3)输入报数上限值m和人数上限n,密

3、码值,均限定为正整数,输入的形式为一个以“回车符”为结束标志的正整数。(4)演示程序以人机对话的形式进行,提供用户从键盘输入,Joseph约瑟夫环的必要数据,并显示出列顺序2.各功能模块的功能描述:(1)主函数模块本模块的主要功能是初始化图形界面,调用各模块,实现软件功能。(2)节点数据结构体定义模块本模块的主要功能是进行数据对象及数据关系的创建(3)单向循环链表创建模块本模块的主要功能是用一个循环链表表示joseph环,结构中有两个成员,其一为指向下一个人的指针,已构成joseph环的链,其二为该人的标记。(4)结点删

4、除模块本模块的主要功能是将结点的下一结点复制到该结点后后将其释放(5)输入子模块本模块的主要功能是进行光标定位,输出提示文字,并对用户输入数据进行处理。3.需要测试的数据:1、总成员数n:7各成员密码:3172474初始值m:202、总成员数n:7各成员密码:3172474初始值m:6二、概要设计说明1.程序流程图输入m、nm>0且n>0的整数建立含n个结点的链表且用head指向第一个元素,结点数据域包含password、No、以及指向下一结点的指针head=>pn≥2(m%n)==0?n:m%n=>m1=>ii

5、next=>pi++输出p→Nop→password=>m删除p所指向结点n--输出p→No结束开始2.模块调用图:主函数模块节点数据结构体定义模块单向循环链表创建模块结点删除模块输入子模块抽象数据类型的定义为:ADTLinkList{数据对象:D={ai

6、ai∈termset,i=1,2,……n,n>=0},termset中每个元素包含编号,密码,和一个指向下一节点的指针数据关系:R1={

7、ai-1,ai∈D,i=2,……n}}基本操作:statusCreateList_Circle(member**

8、,int);创建循环链表statusDeleteNode(member**);删除链表结点此抽象数据类型中的一些常量如下:typedefintstatus;#defineOVERFLOW-2#defineOK1#defineERROR0三、详细设计说明1、主函数模块调用各功能模块,实现单向链表循环、输入、输出等功能。2.节点数据结构体定义模块joseph环的组成成员由密码(password)和序号(No)组成,循环链表的存储结构如下:typedefstructLNode{intpassword;//密码intNo;//序

9、号structLNode*next;//下一成员指针}member;//组成成员结构体3.单向循环链表创建模块实现任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。statusCreateList_Circle(member**p_head,intn){inti;member*tail,*p;*p_head=(member*)malloc(sizeof(member

10、));if(!(*p_head))returnOVERFLOW;(*p_head)->No=1;//储存成员一序号printf("请输入成员1的密码:");scanf("%d",&(*p_head)->password);//储存成员一密码while((*p_head)->password<=0){printf(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。