




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
约瑟夫生死游戏一、约瑟夫生死游戏30个人围成一个圈由第一个人数起,依次报数,数到第九个人,便把他剔除,然后再从他的下一个人数起,数到第九个人,再将他剔除剩下15个乘客为止,问那些位置将是被扔下大海的位置。二、实验目的 n个人围成一个圈由第一个人数起,依次报数,数到第x个人,便把他剔除,然后再从他的下一个人数起,数到第x个人,再将他剔除,依次继续,直到剩下的人数小于等于n/2。三、功能分析1、构建约瑟夫链表:使整个游戏在链表中运行,使得结点在删除时不需要移动大量的结点;2、确定n的值:进而使链具化体,从而可以构建一个具体的链表;3、更新链表:对剔除结点后的链表进行重新连接,构成一个新的链表,使得循环继续进行;4、输入:输入n的值进行链表具体化,输入间隔值m,使得间隔被确定,程序得以有效正确的进行;5、输出:输出要剔除的结点的数值。四、系统设计1、 利用类定义构造成员函数以及成员templateclass Listpublic:List()first=new LinkNode;first-link=first;List(T x)first=new LinkNode(x);first-link=first;List(List&L);List()void Insert(int i,T x);T getHead()return first-data; LinkNode* getfirst()return first;void xiuf(LinkNode* a)first=a;LinkNode*Locate(int i); protected:LinkNode*first;2、 定义成员函数templateList:List(List&L)T value;LinkNode*srcptr=L.getHead();LinkNode*destptr=first=new LinkNode;destptr-data=srcptr-data;while(srcptr-link!=first) value=srcptr-link-data;destptr-link=new LinkNode(value);destptr=destptr-link;srcptr=srcptr-link;last=srcptr;templateLinkNode* List:Locate(int i)if(i0)return NULL;LinkNode* current=first;int k=1;while(klink;k+;if(current=first)return NULL;return current;3、 创建含有n个结点的单循环链表队列的顺序表示和实现和顺序栈相似,在队列的顺序存储结构中,除了用一组地址连续的存储单元依次存放从队列头到队列尾的元素之外,尚需附设两个指针front和rear分别指示队列头元素及队列尾元素的位置。初始化建空队列时,令front=rear=0,每当插入新的队列尾元素时,“尾指针增1”;每当删除队列头元素时,“头指针增1”。因此,在非空队列中,头指针始终指向队列头元素,而尾指针始终指向队列尾元素的下一个位置。从上述分析可见,不能用动态分配的一维数组来实现循环队列。如果用户的应用程序中设有循环队列,则必须为它设定一个最大队列长度;若用户无法预估所用队列的最大长度,则宜采用链队列。templatevoid List:Insert(int i,T x)LinkNode* current=Locate(i);if(current=NULL)return;LinkNode*newNode=new LinkNode(x);if(newNode=NULL)cout存储分配错误!link=current-link;current-link=newNode;4、 Josephu操作Josphu链表链式表示和实现约瑟夫(Josephu)问题:已知N个人围坐在一张圆桌周围(不妨以1,2,N对每一个人依次编号),现在先从序号为K的人开始报数,数到m的那个人出列,他的下一个人又从1开始数,报数到m的人出列直到所有人都出出列为止。给出出列的顺序。templatevoid Josephus(List& Js,int n,int m)LinkNode *p=Js.Locate(1),*pre;int i,j;for(i=1;i=n/2;i+)if(m=1)cout出列的人是:datalink; Js.xiuf(p-link);delete p;p=pre;else for(j=1;jlink; cout出列的人是datalink=p-link; if(p=Js.getfirst()Js.xiuf(p-link); /if(p=Js.getlast()Js.movelast(pre); delete p; p=pre-link;5、 主函数void main() List clist(1); int i,n,m; cout输入游戏者的人数和报数间隔:nm; for(i=1;in;i+) clist.Insert(i,i+1); Josephus(clist,n,m); 五、程序流程开始进入程序,先确定n的值,然后,根据n得知建立链表,然后数数,确定输出的位置,输出数,更新链表,如果剩下的数小于等于n/2,则停止程序,否则继续计数进行循环直至结束程序。六、程序运行图输入人数30和间隔9运行结果也可以输入人数40间隔10六、完整程序代码#includeusing namespace std;templatestruct LinkNodeT data; LinkNode*link;LinkNode( T item) data=item;link=NULL;templateclass Listpublic:List()first=new LinkNode;first-link=first;List(T x)first=new LinkNode(x);first-link=first;List(List&L);List()void Insert(int i,T x);T getHead()return first-data; LinkNode* getfirst()return first;void xiuf(LinkNode* a)first=a;LinkNode*Locate(int i);protected:LinkNode*first;templateList:List(List&L)T value;LinkNode*srcptr=L.getHead();LinkNode*destptr=first=new LinkNode;destptr-data=srcptr-data;while(srcptr-link!=first)value=srcptr-link-data;destptr-link=new LinkNode(value);destptr=destptr-link;srcptr=srcptr-link;last=srcptr;templateLinkNode* List:Locate(int i)if(i0)return NULL;LinkNode* current=first;int k=1;while(klink;k+;if(current=first)return NULL;return current;templatevoid List:Insert(int i,T x)LinkNode* current=Locate(i);if(current=NULL)return;LinkNode*newNode=new LinkNode(x);if(newNode=NULL)cout存储分配错误!link=current-link;current-link=newNode;templatevoid Josephus(List& Js,int n,int m)LinkNode *p=Js.Locate(1),*pre;int i,j;for(i=1;i=n/2;i+) if(m=1)cout出列的人是:datalink; Js.xiuf(p-link);delete p;p=pre;else for(j=1;jlink; cout出列的人是datalink=p-link; if(p=Js.getfirst()Js.xiuf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《小学教师招聘》押题模拟及完整答案详解【考点梳理】
- 白莲河水库加固工程施工组织设计方案
- 教师招聘之《小学教师招聘》强化训练题型汇编及答案详解(典优)
- 智能楼宇与设施管理创新创业项目商业计划书
- 教师招聘之《小学教师招聘》考前冲刺练习题含答案详解(能力提升)
- 2025内蒙古鄂尔多斯东胜区第五小学分校塔拉壕小学招聘1人笔试备考附答案详解(突破训练)
- 2025年教师招聘之《幼儿教师招聘》练习题库包及参考答案详解(新)
- 2025年教师招聘之《幼儿教师招聘》模拟试题及一套答案详解
- 教师招聘之《小学教师招聘》强化训练题型汇编含完整答案详解【全优】
- 考点攻克公务员考试《常识》同步练习练习题(含答案详解)
- Vue3系统入门与项目实战
- 香港买卖黄金佣金合同模板
- 旅游产品开发与设计作业指导书
- 中职语文职业模块1.2《宁夏闽宁镇:昔日干沙滩-今日金沙滩》教案
- 3.2 摩擦力 课件 高一上学期物理人教版(2019)必修第一册
- 2024年指标房转让买卖合同范本
- 水土保持工程概(估)算编制规定
- DZ/T 0430-2023 固体矿产资源储量核实报告编写规范(正式版)
- 2024年海南省中职教师技能大赛-新能源汽车维修 赛项规程
- 人美版六年级上册美术教案完整版
- (正式版)YBT 072-2024 方坯和圆坯连铸结晶器
评论
0/150
提交评论