




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构实验报告实验名称: 实验一 约瑟夫问题学生姓名: *班 级: 20132111*班内序号: *学 号: 201321*日 期: 2014年1月4日1 实验要求实验题目:利用循环链表实现约瑟夫问题的求解。约瑟夫问题如下:已知n个人(n=1)围坐一圆桌周围,从1开始顺序编号。从序号为1的人开始报数,顺时针数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规则重复下去,直到所有人全部出列。请问最后一个出列的人的编号。实验目的:熟悉C+语言的基本编程方法,掌握集成编译环境的调试方法学习指针、模板类、异常处理的使用掌握线性表的操作的实现方法学习使用线性表解决实际问题的能力2. 程序分析2.1 存储结构 采用单循环链表实现约瑟夫问题的求解单循环链表示意图2.2关键算法分析1、关键算法首先通过尾插法建立单循环链表,若只有一个人,即只删除该人即可,若多于一人,则每查到m个人时删除该节点,并将循环链表连接好,共循环n-1次,每次删除均返回被删数值。2、代码详细分析:1).指针结构、类的声明struct Node /创立节点 int number; Node *next; ; class Joseph /建立Joseph类 private: int n; int m; Node *front ; /front头指针public: Joseph(int nn, int mm); /构造函数 Joseph(); /析构函数 void Delete(); /删除函数; 2).单循环链表的建立 Joseph:Joseph(int nn, int mm) /构造函数,建立循环链表 n=nn; m=mm; Node *p,*rear; /建立两个指针.尾插法,p2始终指向为节点 for(int i=1; inumber=i; if(i=1) /建立空链表 front=p; rear=p; else rear-next=p; rear=p; rear-next=front; /尾指向头,循环完成 算法: 设两个指针p,rear, rear为尾节点,p为新增加的节点 若是空链表,则front=p; rear=p; 否则用尾插法,即p 在rear的后面,将p给rear;rear-next=p; rear=p; 头结点赋给rear的指针域,完成循环循环次数为n, 时间复杂度为O(n)3). 输入值异常的情况coutn;if (n1) /考虑n输入错误的情况coutn值输入错误endl;coutm;if (m1) /考虑m输入异常的情况coutm值输入错误endl;4).寻找一定间隔的人,并将其删除void Joseph:Delete() /删除人员的函数 Node *p1,*p2,*p; int count; /用来计数 p1=front; /头结点给p1if(m=1)cout最后一个人的编号为nendl;elsecout每次被删除的人为endl; for(int i=1; i=n-1; i+) /共删除n-1个人,循环n-1次 count=1; while(countnext; /p1向后移 count+; coutnumbernext=p1-next; p1=p1-next; /p1后移,防止删除后指针悬挂 delete p; coutendl; cout最后一个人的编号为 numbernext; p2始终指向第一个节点 摘链,将p指向待删除的p1,即将p1元素从链表中摘除: 输出p1的数值 释放p元素:delete p;循环次数为m(n-1), 时间复杂度为O(n)5)析构函数Joseph:Joseph() /析构函数 delete front; front=NULL; 6)主函数void main() int n,m; coutn; coutm; Joseph joseph(n,m); joseph.Delete(); 3. 程序运行结果测试主函数流程: 开始等待用户输入输入值是否有效 是查找删除节点循环次数是否大于n-1次 是输出最后一个数值结束流程图示意图1、 测试条件:n数量级无限制 2、 测试结论4. 总结由于是第一次做数据结构的实验,而上学期的C+也因长时间没有碰过而稍显手生,在码程序的过程中遇到了很多问题,但通过翻看教材已基本解决。约瑟夫虽然构思起来比较简单
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 钢结构工程环境友好施工方案
- (2025年标准)工厂协同维修协议书
- 幼儿园大班营养与健康教育方案
- 杜甫诗词教学活动设计与赏析方案
- 特色农产品冷链配送效率提升方案
- (2025年标准)高清离婚协议书
- 活动方案评审标准制定与应用
- 储能系统应用场景与市场分析
- 环境保护与生态修复方案
- (2025年标准)买房出资份额协议书
- 《小麦产业在国民经济中的地位与贡献》论文
- 2025年广西宾阳县昆仑投资集团有限公司招聘笔试参考题库含答案解析
- 2025年辽宁省大连庄河市纪委监委招聘政府雇员2人高频重点模拟试卷提升(共500题附带答案详解)
- 体育与健康《立定跳远》教学课件
- 中医养生秋季篇课件
- DB37-T 4546-2022 农业废弃物制备生物炭技术规程
- 华为战略规划BLM业务领导力模型应用实战
- 产品结构设计的未来趋势
- 2024年六西格玛绿带认证考试练习题库(含答案)
- 集控值班员(高级)职业技能鉴定考试题库
- 2024年自考《14269数字影像设计与制作》考试复习题库(含答案)
评论
0/150
提交评论