1、 目录 第一章 需求分析 1 1.1课程设计目的 1 1.2课程设计要求 1 1.3课程设计目标与总体方案 1 1.4程序执行的命令 1 第二章 系统的功能 2 2.1系统功能说明 2 2.2 系统功能解析 2 第三章 系统的设计 3 3.1Josphu链表的实现 3 3.2循环链表 3 3.3 对程序的各个部分的详细介绍 3 3.3.1利用类定义构造成员函数以及成员 3 3.3.2 定义成员函数 4 3.3.3创建含有n个结点的单循环链表 5 3.3.4 Josephu操作 5 3.3.5主函数 6 3.4程序的
2、流程 7 第四章 程序的运行结果图 8 4.1开始运行程序 8 4.2先键入参加游戏的人数及报数间隔 8 4.3按空格键运行程序 9 第五章 总结 10 致谢 11 附录一 参考文献 12 附录二 程序源代码 13 约瑟夫生死游戏 第一章 需求分析 1.1课程设计目的 课程设计目的是为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。通过实践让学生理论和实际操作相结合,更好的理解书面知识,并在巩固的基础上融会所学认识。 1.2课程设计要求 约
3、瑟夫生死游戏:30个人围成一个圈由第一个人数起,依次报数,数到第九个人,便把他剔除,然后再从他的下一个人数起,数到第九个人,再将他剔除剩下15个乘客为止,问那些位置将是被扔下大海的位置。课程设计要求是将30个人改为n,报数(原为9),也改为任意正整数。根据得到的初始数据得到生者和死者的位置编号并输出。 1.3课程设计目标与总体方案 本实验设计的目标是运用循环链表来解决Josephu环问题,其中运用了许多链表中的基本操作使改程序能不只解决一个Josephu的简单链表,其中的Josephu函数则是用于,运用C++程序编写程序,实现队列的建立、插入和删除基本功能,在程序设计成功的基础上,
4、进一步深化理解队列的作用和实现原理。 1.4程序执行的命令 构造链表、输入数据、执行报数输出出列人的序号结束。 第二章 系统的功能 2.1系统功能说明 图1 系统功能程序图 2.2 系统功能解析 如上图所示,本系统分为五个功能模块分别为:构建链表,确定n值,更新链表,输入,输出。下面就每个功能进行详细说明: (1)构建约瑟夫链表:使整个游戏在链表中运行,使得结点在删除时不需要移动大量的结点; (2)确定n的值:进而使链具化体,从而可以构建一个具体的链表; (3)更新链表:对剔除结点后的链表进行重新连接又,有构成了一个新的链表,
5、使得循环继续进行; (4)输入:输入n的值进行链表具体化,输入间隔值m,使得间隔被确定,程序得以有效正确的进行; (5)输出:输出要剔除的结点的数值。 第三章 系统的设计 3.1Josphu链表的实现 Josphu链表——链式表示和实现约瑟夫(Josephu)问题:已知N个人围坐在一张圆桌周围(不妨以1,2,……,N对每一个人依次编号),现在先从序号为K的人开始报数,数到m的那个人出列,他的下一个人又从1开始数,报数到m的人出列……直到所有人都出出列为止。给出出列的顺序。 3.2循环链表 队列的顺序表示和实现和顺序栈相似,在队列的顺序存储结构中,除了用一组地址连续的存储单
6、元依次存放从队列头到队列尾的元素之外,尚需附设两个指针front和rear分别指示队列头元素及队列尾元素的位置。为了C语言中描述方便起见,在此我们约定,初始化建空队列时,令front=rear=0,每当插入新的队列尾元素时,“尾指针增1”;每当删除队列头元素时,“头指针增1”。因此,在非空队列中,头指针始终指向队列头元素,而尾指针始终指向队列尾元素的下一个位置从上述分析可见,在C++中不能用动态分配的一维数组来实现循环队列。如果用户的应用程序中设有循环队列,则必须为它设定一个最大队列长度;若用户无法预估所用队列的最大长度,则宜采用链队列。 3.3 对程序的各个部分的详细介绍 编写本
7、实验设计程序采用C++进行,在Visual c++ 6.0环境下运行。
3.3.1利用类定义构造成员函数以及成员
template
8、i,T x);
T getHead(){return first->data;}
LinkNode
9、ad();
LinkNode
10、List
11、nt=Locate(i);
if(current==NULL)return;
LinkNode
12、直到将Josephu链表中的一半元素被输出。函数如下:
template
13、e
{
for(j=1;j
14、 15、
第四章 程序的运行结果图
4.1开始运行程序
程序的初始化
图3 程序初始化
4.2先键入参加游戏的人数及报数间隔
输入人数和报数间隔30 9
图4 确定n值及间隔值m
4.3按空格键运行程序
运行结果
图4.3运行结果
第五章 总结
致谢
附录一 参考文献
[1]谭浩强.《C++程序设计》.北京:清华大学出版社 .2003年
[2]严蔚敏,吴伟民 .《数据结构》. 16、北京:清华大学出版社.2006年
[3]严蔚敏,吴伟民,米宁.《数据结构教程上机实验指导》.北京:清华大学出版社.2006年
附录二 程序源代码
#include 17、
template 18、kNode 19、rcptr->data;
while(srcptr->link!=first)
{
value=srcptr->link->data;
destptr->link=new LinkNode 20、
int k=1;
while(klink;
k++;
if(current==first)return NULL;
}
return current;
};
template 21、LL)
{
cout<<"存储分配错误!"< 22、dl;
pre=p->link;
Js.xiuf(p->link);
delete p;
p=pre;
}
else
{
for(j=1;j
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818