- 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-
您可能关注的文档
- Linux5.5下安装Oracle10G.doc
- 猎头顾问的职业发展困惑文档.doc
- 初中圆的有关性质测试题.doc
- 如何学习《英美文学选读》.doc
- 2013-420 王用利《FIB》Oxidative-damage effect of Fe3O4 nanoparticles on mouse+.pdf.doc
- 深基础(英文资料).doc
- 多元线性回归模型试验.doc
- 工作流基本操作说明.doc
- 译林版英语3Aunit7教案1.doc
- 多种绝密实用洗洁精配方35.doc
- 《JJF 2132-2024荧光紫外灯人工气候老化试验装置校准规范:辐射照度参数》.pdf
- JJF 2120-2024轮速传感器校准规范.pdf
- 计量规程规范 JJF 2120-2024轮速传感器校准规范.pdf
- 《JJF 2129-2024钙钛矿太阳电池校准规范:光电性能参数》.pdf
- JJF 2129-2024钙钛矿太阳电池校准规范:光电性能参数.pdf
- 《JJF 2120-2024轮速传感器校准规范》.pdf
- JJF 2117-2024沥青混合料理论最大相对密度仪校准规范.pdf
- JJF 2116-2024特定蛋白分析仪校准规范.pdf
- 《JJF 2116-2024特定蛋白分析仪校准规范》.pdf
- 计量规程规范 JJF 2117-2024沥青混合料理论最大相对密度仪校准规范.pdf
文档评论(0)