数据结构课程设计格式参考
更新时间:2023-09-11 16:59:01 阅读量: 教育文库 文档下载
郑州师范学院软件工程专业
数据结构 课程设计报告
设计题目: 班 级: 组 长: 姓名(学号) 组 员:姓名(学号)… 指导教师: 完成日期:
成绩:
目 录
1需求分析 .......................................................... 1
1.1功能分析 ............................................................. 1 1.2设计平台 ............................................................. 1
2概要设计 .......................................................... 2
2.1类LinkList ........................................................... 4 2.2类Joseph ............................................................. 4 2.3类异常处理 ........................................................... 4
3详细设计和实现 .................................................... 4
3.1创建结点Node ......................................................... 5 3.2创建双向循环链表 ..................................................... 6 3.3从链表中删除结点 ..................................................... 7
4调试与操作说明 ................................................... 11
4.1调试情况 ............................................................ 11 4.2操作说明 ............................................................ 11
5设计总结 ......................................................... 12 参 考 文 献 ....................................................... 13 附录 .............................................................. 13
0
1需求分析
1.1功能分析
本次选做的课程设计是改进约瑟夫(Joseph)环问题。约瑟夫环问题是一个古老的数学问题,本次课题要求用程序语言的方式解决数学问题。此问题仅使用单循环链表就可以解决此问题。而改进的约瑟夫问题通过运用双向循环链表,同样也能方便地解决。
在建立双向循环链表时,因为约瑟夫环的大小由输入决定。为方便操作,我们将每个结点的数据域的值定为生成结点时的顺序号和每个人持有的密码。进行操作时,用一个指针current指向当前的结点,指针front始终指向头结点。然后建立双向循环链表,因为每个人的密码是通过rand()函数随机生成的,所以指定第一个人的顺序号,找到结点,不断地从链表中删除链结点,直到链表剩下最后一个结点,通过一系列的循环就可以解决改进约瑟夫环问题。
1、
本演示程序中,利用单向循环链表存储结构模拟约瑟夫问题的进行。
程序运行后,首先要求用户指定初始报数上限值,然后读取个人的密码。可设n≤30。此题所用的循环链表中不需要“头结点”,因此在程序设计中应注意空表和非空表的界限。
2、
演示程序以用户和计算机的对话方式执行,即在计算机终端上显示
“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令:相应的输入数据和运算结果显示在其后。
3、 1) 密码;
3)结束。 4、测试数据
1)m的初始值为20;
2)n=7,7个人的密码依次为:3、1、7、2、4、8、4。 3)首先m值为6,正确的出列顺序应为6、1、4、7、2、3、5。
程序执行的命令包括:
构造约瑟夫环;2)执行约瑟夫环,并输出出列人的序号以及相应的
1.2设计平台
1
Windows2000以上操作系统;Microsoft Visual C++ 6.0
2概要设计
已知n个人(以编号1,2,3...n分别表示)围成一圈。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到一圈的人全部出列。这个就是约瑟夫环问题的实际场景,有一种是要通过输入n,m,k三个正整数,来求出列的序列。这个问题采用的是典型的循环链表的数据结构,就是将一个链表的尾元素指针指向队首元素。 p->link=head。解决问题的核心步骤:首先建立一个具有n个链结点,无头结点的循环链表。然后确定第1个报数人的位置。最后不断地从链表中删除链结点,直到链表为空。
改进的约瑟夫环问题与原问题思路一致,只是不再采用单循环链表存储结构,而采用双向循环链表,而且用一个判断语句来决定报数的方向的顺时针还是逆时针。本课程设计主要采用了类的数据结构,程序中包含了两个类:Linklist , Joseph。
为实现上述程序功能,应以单向循环链表表示约瑟夫环。为此,需要两个抽象数据类型:单向循环链表和约瑟夫环。
1)、单向循环链表的抽象数据类型定义为: ADT List{
数据对象:D={ai|ai∈Elemset,i=1,2,…,n,n≥0} 数据关系:R1={<a(i-1),ai>|a(i-1),ai∈D,i=2,…n} 基本操作: InitList(&L)
操作结果:构造一个空的链表L。 DestroyList(&L)
初始条件:线性表L已存在。 操作结果:销毁线性表L。 ListLength(L)
初始条件:线性表L已存在。
操作结果:返回L中数据元素个数。 GetElem(L,i,&e)
初始条件:线性表L已存在,1≤i≤ListLength(L)。 操作结果:用e返回L中第i个数据元素的值。 ListInsert(&L,I,e)
初始条件:线性表L已存在,1≤i≤ListLength(L)+1。
操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1。
2
ListDelete(&L,i,&e)
初始条件:线性表L已存在且非空,1≤i≤ListLength(L)。
操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1。 ListTraverse(L,visit())
初始条件:线性表L已存在。
操作结果:依次对L的每个数据元素调用函数visit()。一旦visit()失败,则
操作失败。
}ADT List
2)约瑟夫环的抽象数据类型定义为: ADT Set{
数据对象:D={ai|ai为用户输入的数字密码,i=1,2,…,n,1≤n≤7} 数据关系:{} 基本操作:
CreatSet(&L,s)
初始条件:L为单向循环链表。
操作结果:对链表中的数据域进行赋值。
DeleteSet(&L,i,&e)
初始条件:线性表L已存在且非空,1≤i≤ListLength(L)。
操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1。 PrintSet(L)
初始条件:链表L已存在。
操作结果:按输出次序显示每个人的密码。 }ADT Set
3)本程序包含四个模块: 1、主程序模块: Void main(){ 初始化; Do{
接受命令; 处理命令;
} while (“命令”=”退出”);
}
2、约瑟夫环单元模块——实现约瑟夫环的抽象数据类型;
3、单向循环链表单元模块——实现单向循环链表的抽象数据类型; 4、结点结构单元模块——定义单向循环链表的结点结构。 各模块之间的调用关系如下:
结点结构单元模块 ↓
单向循环链表单元模块 ↓
约瑟夫环单元模块
↓
主程序模块
3
正在阅读:
数据结构课程设计格式参考09-11
岚皋县职称论文发表网-海绵城市现代城市建设应用论文选题题目05-06
unit6askingthewaylesson11教案表格式教案.docx08-11
Vray高级渲染器使用方法07-26
新教科版五年级科学上册实验报告单(二)05-14
小学生一年级关于圣诞节的作文06-14
马哲第五章05-02
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 数据结构
- 参考
- 课程
- 格式
- 设计
- 初中生物学业考试复习知识清单 - 图文
- 1955年人民解放军授衔将帅籍贯一览
- 新人教版小学数学二年级下册第十单元《总复习》试卷
- LNG钢瓶充装流程
- 03-06历届外科(总论+各论)考题
- 浙江块状经济
- 北师大版小学一年级语文上册第三周
- 国内外gis基础软件对比分析报告
- 苏教版小学三年级下册数学第八单元试卷优秀
- 深信服上网行为管理部署方式及功能实现配置说明
- 2013春学期《水文地质学基础》在线作业1
- 2013年高考高考百日誓师讲话
- 屈臣氏营销环境分析(2)
- 管理学模拟卷3
- 西翼运输石门揭6#煤措施(标准)
- 小学六年级小升初周考数学模拟试卷
- 客户经理谈合规 - 诚实守信,倡导合规
- 人教版小学数学六年级上册(分数乘法应用题专题)
- 川农农业水利工程概论本科春在线作业
- 工作总结:三年来驻村工作队工作总结