- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北邮数据结构实验一约瑟夫问题实验报告
数据结构实验报告
实验名称: 实验一——线性表
学生姓名:
班 级:
班内序号:
学 号:
日 期:
1.实验要求
实验目的
熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法
学习指针、模板类、异常处理的使用
掌握线性表的操作的实现方法
学习使用线性表解决实际问题的能力
实验内容
利用循环链表实现约瑟夫问题的求解。
约瑟夫问题如下:已知n个人(n=1)围坐一圆桌周围,从序号为的人开始报数,顺时针数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规则重复下去,直到所有人全部出列。 p=head;
for(i=1;i=n-1;i++) //赋初值
{
p-data=i;
p-next=new Node; //为下一个新建内存
p=p-next;
}
p-data=n; //最后一个单独处理
p-next=head; //指向头,形成循环链表
p=head;
输入值异常的情况
cout请输入环内总人数n:;
cinn;
if (n1) //考虑n输入错误的情况
{
coutn值输入错误endl;
}
cout请输入起始人号码:;
cink;
if (k1||kn) //考虑k输入异常的情况
{
coutk值输入错误endl;
}
cout请输入m值:;
cinm;
if (m1) //考虑m输入异常的情况
{
coutm值输入错误endl;
}
在约瑟夫环中实现逐个出环并找出最后一个出环的序号
while(p!=p-next)
{
for(i=1;im-1;i++) //查找q的节点
p=p-next;
q=p-next;
cout第s个出环的人编号是:q-dataendl;
p-next=q-next;
p=p-next;
delete q; //释放q的空间
s++;
}
cout最后环内留下的人编号是:p-dataendl;
delete p;
算法步骤:
从第一个结点开始,查找第i-1个元素,设为p指向该结点;
设q指向第i个元素:q = p-next;,输出q元素的数据;
摘链,即将q元素从链表中摘除:
p-next = q-next;
p=p-next;
delete q;
3. 程序运行结果
测试主函数流程:流程图如图所示
2、程序运行结果
3、输入错误运行结果
4. 总结
在调试程序过程中,虽然没有编译错误,但是运行结果总是和准确值差1,最后发现是把i=1写成i=0,才造成的错误,改过之后就没有问题了。
数据结构为我们提供有效算法,我们需要好好理解其中的每一段算法以便我们运用数据结构的知识解决复杂的问题。数据结构是我们学好编程的好助手。
下一步,应该运用模版相关知识,改进程序,使程序更具有可行性与规范性。
下面是余秋雨经典励志语录,欢迎阅读。 不需要的朋友可以编辑删除!!
关于年龄
1.一个横贯终生的品德基本上都是在青年时代形成的,可惜在那个至关重要的时代,青年人受到的正面的鼓动永远是为成功而搏斗,而一般所谓的成功总是带有排他性、自私性的印记。结果,脸颊上还没有皱纹的他们,却在品德上挖下了一个个看不见的黑洞。
2.我不赞成太多地歌颂青年,而坚持认为那是一个充满陷阱的年代。陷阱一生都会遇到,但青年时代的陷阱最多、最大、最险。
3.历史上也有一些深刻的哲人,以歌颂青年来弘扬社会的生命力。但这里显然横亘着一种二律背反:越是坚固的对象越需要鼓动青年去对付,但他们恰恰因为年轻,无法与真正的坚持相斡旋。
4.青年时代的正常状态是什么,我想一切还是从真诚的谦虚开始。青年人应该懂得,在我们出生之前,这个世界已经精精彩彩、复复杂杂地存在过无数年,我们什么也不懂,能够站正脚下的一角建设一点什么,已是万幸。
5.中年是对青年的延伸,又是对青年的告别。这种告别不仅仅是一系列观念的变异,而是一个终于自立的成熟者对于能够随心所欲处置各种问题的自信。
6.
文档评论(0)