数据结构实践报告学号: 名:班级: 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 36 39 1 5 10 14 19 23 28 32 37 41 713 20 26 34 40 8 17 29 38 11 25 2 22 4 35 16 31错误:输入:10 3输出:6 8 7 1 3 4 2 9 5 10二、程序清单1、 抽象数据类型的定义:为实现上述程序的功能,可以用整数存储用户的输入。并将用户输入的值存储于线性表中。线性表 ADT 定义如下:ADT list数据对象:整形数据关系:线性关系,即
(0≤a<n)。基本操作:bool remove(int &elem)//移除一个元素,被移除的元素赋给 elem//如果操作成功,返回 true,否则返回...