数据结构实践报告学号: 名:班级: NET2 班指导老师:时间: 2016-12-21项目名称一、 项目构思程序由三个模块组成:(1)输入模块:无提示语句,直接输入总人数 n 和报数次数 m,中间用逗号隔开
(2)处理模块:将元素储存于顺序表中
在主函数中根据报数间隔确定需要删除的元素的位置,在顺序表中设置该位置并删除该位置,同时输出该位置的值
反复设置并删除直到表空
(3)输出模块:分别在 DOS 下和文件中,按移除元素的顺序依次显示其位置
约瑟夫环问题中的数据是人所在的位置,而这种数据是存在“第一元素、最后元素”,并且存在“唯一的前驱和后继的”,符合线性表的特点
由于需要模拟约瑟夫环的出列问题,可以采用顺序表来实现线性表,完成出列顺序的输出
核心算法主要分为两步:1、确定需要删除的位置,2、设置并删除该位置
已知报数间隔 m,我们可以把当前位置加上 m 获得需要删除的位置,如果获得的位置超过顺序表中实际元素的总长度,则可以通过减去数组的实际长度来修正(即模拟环状计数)
然后把顺序表中的当前指向位置设置为该位置,继而删掉该位置
反复进行上述确定位置和删除位置的操作,直到顺序表为空
程序主要功能模块1、输入的形式和输入值的范围:每一次输入的值为两个正整数,中间用逗号隔开
若分别设为 n,m,则输入格式为:“n,m”
不对非法输入做处理,即假设输入都是合法的
2、输出的形式:输出格式 1:在字符界面上输出这 n 个数的输出序列输出格式 2:将这 n 个数的输出序列写入到文件中3、程序所能达到的功能:对于输入的约瑟夫环长度 n 和间隔 m,输出约瑟夫环的出列顺序
4、测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果
正确:输入:10,3输出:3 6 9 2 7 1 8 5 10 4精选输入:41,3输出:3 6 9 12 15 18 21 24 27 30 33