- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北邮数据结构实验一题目4约瑟夫问题
数据结构实验报告
实验名称: 实验一—题目4:约瑟夫问题
学生姓名:
班 级: 2012211118
班内序号:
学 号:
日 期: 2013年10月30日
实验要求
实验目的:
熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法;
学习指针、模板类、异常处理的使用;
掌握线性表的操作的实现方法;
学习使用线性表解决实际问题的能力。
实验内容:
利用循环链表实现约瑟夫问题的求解。
约瑟夫问题如下:已知n个人(n=1)围坐一圆桌周围,从1开始顺序编号。从序号为1的人开始报数,顺时针数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规则重复下去,直到所有人全部出列。请问最后一个出列的人的编号。
2. 程序分析
2.1 存储结构
约瑟夫问题使用了循环链表,如下图:
2.2 关键算法分析
2.2.1.约瑟夫问题的基本思想:
约瑟夫问题的循环性决定了其使用循环链表较好。先将n个人编号(存入data区),存入链表;再使用一段循环程序依次删除第m个人,直至链表只剩一个节点;输出该节点的编号。
有参构造函数自然语言描述:
(1)为尾指针分配空间,先使尾指针数据域存入序号1,并使尾指针指针域指向头结点:
rear=new NodeT;
rear-data=1;
rear-next=rear;
(2)用循环语句(直至i=n)依次建立并初始化链表各结点:
建立一个结点,用相应的序号i+1初始化其数据域:
NodeT * s=new NodeT;
s-data=i+1;
使该结点的指针域指向链表第一个结点:
s-next=rear-next;
尾指针所指结点的指针域指向该结点:
rear-next=s;
尾指针指向该结点:
rear=s;
筛选函数自然语言描述:
(1)尾指针指向第一个结点:rear=rear-next;
(2)循环查找第m个结点,结束条件为链表中只剩一个结点(rear=rear-next):
循环执行(rear=rear-next)m-1次,使尾指针指向第m个结点;
新建指针,指向第m个结点的下一个结点:
NodeT * q=rear-next;
第m个结点复制下一个结点的数据域和指针域,代替下一个结点:
rear-data=q-data;
rear-next=q-next;
删除m结点的下一个节点:
delete q;
(3)返回链表中剩的最后一个结点的数据域存储的序号:return rear-data;
2.2.2.代码详细分析:
#includeiostream
using namespace std;
templateclass T
struct Node
{
T data;
NodeT * next;
}; //定义结构类型的结点
templateclass T
class CLinkList //定义循环链表模板类
{
public:
CLinkList(int n); //有参构造函数
T Delete(int m); //筛选函数
private:
NodeT * rear; //尾指针
};
templateclass T
CLinkListT::CLinkList(int n) //建立循环链表
{
rear=new NodeT;
rear-next=rear;
rear-data=1; //建立链表第一个结点,用序号1初始化
for(int i=1;in;i++) //用循环语句依次建立并初始化链表各结点
{
NodeT * s=new NodeT;
s-data=i+1; //建立一个结点,用相应的序号i+1初始化其数据域
s-next=rear-next; //使该结点的指针域指向链表第一个结点
rear-
您可能关注的文档
最近下载
- 上海市域铁路地下管线及障碍物调查探测规范.docx VIP
- 大学生职业规划大赛《财务管理专业》生涯发展展示PPT.pptx
- 高中英语新教材北师大版(2019)必修三教案+Unit+8+Green+Living+Viewing+Workshop+Solar+Energy.doc
- 住院精神疾病患者自杀风险护理团体标准解读PPT.pptx
- 胰岛素泵操作SOP.docx
- 北京市朝阳区2023-2024学年七年级上学期期末语文试题(含答案解析).pdf VIP
- D-Z-T 0187-2016 地面磁性源瞬变电磁法技术规程(正式版).docx VIP
- (小城镇建设)论文.doc
- Unit1ReadingandThinking教案--高中英语人教版(2019)必修第三册.docx
- 北师大版(2019)必修第三册 Unit 8 Green Living Viewing Workshop Solar Energy 教学设计.docx
文档评论(0)