求解Josephus问题实验总结(用C语言循环单链表实现)_循环单链表实验报告
求解Josephus问题实验总结(用C语言循环单链表实现)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“循环单链表实验报告”。
求解Josephus问题实验总结
1实验题目: josephus问题可描述如下:
设有n个人围成一个环,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人从新开始报数,数到第m的人又出列,如此重复,直至所有人均出列为止。求这些人出列的顺序。
2实验目的:
熟练掌握线性表的顺序实现和链式实现的基本操作。
3实验方法:
通过运用已学的向量和循环单链表编写程序,并在电脑上运行,实现josephus问题的求解。4实验过程与结果:
(1)输入n值为6,s值为3,m值为2,输入A[i]的值为1 2 3 4 5 6 输出结 果为:4 6 2 5 3 1 截图如下:
(2)
1、输入n值为-1, s值为3,m值为2,显示:ERROR。截图如下:
2、输入n值为6, s值为0,m值为3,显示:ERROR。截图如下:
3、输入n值为6, s值为3,m值为0,显示:ERROR。截图如下
:
5试验体会与收获:
(1)写程序是要随时注意缩进,使得程序层次清晰,便于寻找错误,同时也让别人看的更加方便。(2)构造循环单链表,要以单链表为单元指针指向把最后个单元与第一个即可(3)建立好循环单链表后,通过三个指针(p,q,tmp)的指示,来确定报数,出列人的位置,得以完成。具体过程如下:p指向head头指针,通过s次循环将p指向报数的起始位置s,用q记录p的位置,再经过m次循环另p指向出列者的位置,将其数值保存在一维数组中,并将其从链表中删除,p指向下一次起始位置,结束时返回数组A[j]。(4)删除节点时,注意要释放节点。
(5)构造函数时,一定要明确函数的类型,即返回行还是不返回型,以免出现不必要的错误。