0
0
C++ 课程设计报告
课 题: 约瑟夫环
专业班级:
学 号:
姓 名:
指导教师:
目 录
评阅意见:
评定成绩:
指导老师签名:
年 月 日
Commented [c1]: 改名字
Commented [c2]: 居中
1
1 课程设计的目的和意义................................................................................................................2
2 需求分析........................................................................................................................................3
3 系统(项目)设计........................................................................................................................4
(包括总体设计和详细设计) .............................................................................................................4
一、设计思路及方案........................................................................................................................4
二、模块的设计及介绍....................................................................................................................4
(2)创建单循环链表函数流程图..................................................................................................6
(3)删除结点函数(出队函数)程序流程图..............................................................................7
4 系统实现........................................................................................................................................8
5 系统调试......................................................................................................................................11
参考文献..........................................................................................................................................16
附录 源程序....................................................................................................................................17
2
1 课程设计的目的和意义
数据结构是研究数据元素之间的逻辑关系的一门课程,以及数据元素及其关
系在计算机中的存储表示和对这些数据所施加的运算。该课程设计的目的是通过
课程设计的综合训练,培养分析和编程等实际动手能力,系统掌握数据结构这门
课程的主要内容。
本次课程设计的内容是用单循环链表模拟约瑟夫环游戏,循环链表是一种首尾
相接链表,其特点是无须增加存储容量,仅对表的链接方式稍作改变,使表处理更
加灵活,约瑟夫环问题就是用单循环链表处理的一个实际应用。通过这个设计实例,
了解单链表和单循环链表的相同与不同之处,进一步加深对链表结构类型及链表操
作的理解。
通过该课程设计,能运用所学知识,能上机解决一些实际问题,了解并初步掌
握设计、实现较大程序的完整过程,包括系统分析、编码设计、系统集成、以及调
试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开
发打好基础。
Commented [c3]: 目录缺少
3
2 需求分析
该程序所做的工作是约瑟夫环游戏,有以下内容和要求:
1.本程序设计中,从键盘输入约瑟夫环游戏的总人数 n 和初始的报数上限 m,
然后给每个人输入所持有的密码 key。用单循环链表模拟约瑟夫环,从队头开始
从 1 报数,报到 m 的人出列,再把此人的密码赋给 m,继续下一轮的报数,直
到所有的人出列。
2.演示程序以用户和计算机对话方式进行,根据提示信息由用户从键盘输
入数据,以“回车符“为结束标志,运行后输出的结果是约瑟夫环的相关信息和
经过报数后出队的人的序列号及相关信息。结果出来后再选择输入一数字,输入
1 继续新一轮的游戏,输入 0 结束,退出此游戏。
3.程序执行的命令包括:
(1)构造单循环链表;(2)输出循环链表的信息;
(3)按照出列的顺序输出各人的编号
4.测试数据
总人数 n=5,初始报数上限 m=6,5 个人的密码依次为 2,5,4,6,7,正
确的输出序列为 2,4,5,3,1。
Commented [c4]: 字体,格式,段落
4
3 系统(项目)设计
(包括总体设计和详细设计)
一、设计思路及方案
用单循环链表来模拟约瑟夫环,结点信息包括编号、密码、指向下一个结点
的指针,用三大主要的函数来实现功能,包括创建链表的函数、输出链表信
息的函数、删除结点也就是出队的函数、主函数等函数。
二、模块的设计及介绍
(1)主程序模块
Void main(){
初始化;
do {
接受命令;
处理命令;
}while(“命令”=“退出”);
}
(2)创建链表模块
Static void creatlist(行参){
初始化;
For{
接受命令;
处理命令 }
}
(3)输出链表信息模块
static void PrntList(参数){
定义变量并初始化;
输出命令;
}
(4)删除结点也就是出队模块
static void StatGame(参数){
定义变量并初始化;
Commented [c5]: 段首缩进