北邮数据结构实验一题目4约瑟夫问题.doc

北邮数据结构实验一题目4约瑟夫问题.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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-

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档