欢迎来到天天文库
浏览记录
ID:55575319
大小:143.50 KB
页数:11页
时间:2020-05-18
《数据结构实验约瑟夫问题实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据结构实验报告课程名称数据结构实验名称数据结构试验专业班级姓名学号实验日期第11周星期日节2012—2013学年度第一学期一、实验目的1、用数组来实现约瑟夫问题二、实验容1、试分别用线性表的向量存储结构和数组存储结构来实现约瑟夫(Josephu)问题。约瑟夫问题如下:设有n个人围坐圆桌周围。从某个位置上的人开始从1报数,数到m的人便出列,下一个人(第m+1个)又从1报数开始,数到m的人便是第2个出列的人,依次类推,直到最后一个人出列为止,这样就可以得到一个人员排列的新次序。例如,n=8,m=4,从第1个人数起,得到的新次序为48521376.三、
2、实验环境1、硬件配置:Pentium(R)Dual-Core9CUPE65002.93GHz,1.96的存2、软件环境:MicrosoftWindowsXPProfessionalServicePack3,MicrosoftVisualC++6.0四、需求分析1、输入的形式和输入值的围:根据题目要求与提示输入数据的总数,间隔数和开始计数的位置2、输出的形式:输出每个挑选的数据3、程序所能达到的功能:从开始计数的位置起,每隔间隔数,就把该位置的数字输出,同时此数被释放掉,然后从继续此操作,若到数据结束位置,则重新开始进行。程序结束的条件是所有的数据输
3、出,释放掉。4、测试数据:输入一个链表,首先输入数据总数,然后输入间隔数,再输入起始位置,若起始位置大于数据总数,会提示错误,要求重新输入起始位置,直至起始位置不大于总数。然后开始输入数据,数据以空格隔开,最后输出结构。如:输入数据总数8,间隔数4,起始位置1,输入数据12345678输出的链表为:48521376五、概要设计为了实现上述操作,应以数组结构。1、本程序包含二个模块:(1)主程序模块;3、流程图输入数据的总数num间隔数count起始位置start当Start>num输入总数num输入起始位置start当I4、字存进a数组中设定这个循环是死循环I++I==num是否I=i%numA[i]!=0是否I++J==count是否B[k++]=a[i]A[i]=0J=0K==num是否跳出循环当K5、&start);printf("");while(start>num){printf("请重新输入:");printf("请输入总数:");scanf("%d",&num);printf("请输入起始位置:");scanf("%d",&start);}printf("请输入数据:");for(i=0;i6、um;if(a[i]!=0)//只有a[i]不为零时,才能j++j++;if(j==count)//达到间隔数{b[k++]=a[i];//将a数组的值赋给b数组a[i]=0;j=0;//使记录间隔的重新开始计数}if(k==num)//当b数组有了a数据全部数据时,结束循环break;}printf("标准顺序为:");for(k=0;k7、num,start;printf("请输入总数:");scanf("%d",&num);printf("请输入间隔数:");scanf("%d",&count);printf("请输入起始位置:");scanf("%d",&start);printf("");while(start>num){printf("请重新输入:");printf("请输入总数:");scanf("%d",&num);printf("请输入起始位置:");scanf("%d",&start);}printf("请输入数据:");for(i=0;i8、)scanf("%d",&a[i]);printf("");i=start-1;k=0;for(j=1;;){i++;
4、字存进a数组中设定这个循环是死循环I++I==num是否I=i%numA[i]!=0是否I++J==count是否B[k++]=a[i]A[i]=0J=0K==num是否跳出循环当K5、&start);printf("");while(start>num){printf("请重新输入:");printf("请输入总数:");scanf("%d",&num);printf("请输入起始位置:");scanf("%d",&start);}printf("请输入数据:");for(i=0;i6、um;if(a[i]!=0)//只有a[i]不为零时,才能j++j++;if(j==count)//达到间隔数{b[k++]=a[i];//将a数组的值赋给b数组a[i]=0;j=0;//使记录间隔的重新开始计数}if(k==num)//当b数组有了a数据全部数据时,结束循环break;}printf("标准顺序为:");for(k=0;k7、num,start;printf("请输入总数:");scanf("%d",&num);printf("请输入间隔数:");scanf("%d",&count);printf("请输入起始位置:");scanf("%d",&start);printf("");while(start>num){printf("请重新输入:");printf("请输入总数:");scanf("%d",&num);printf("请输入起始位置:");scanf("%d",&start);}printf("请输入数据:");for(i=0;i8、)scanf("%d",&a[i]);printf("");i=start-1;k=0;for(j=1;;){i++;
5、&start);printf("");while(start>num){printf("请重新输入:");printf("请输入总数:");scanf("%d",&num);printf("请输入起始位置:");scanf("%d",&start);}printf("请输入数据:");for(i=0;i6、um;if(a[i]!=0)//只有a[i]不为零时,才能j++j++;if(j==count)//达到间隔数{b[k++]=a[i];//将a数组的值赋给b数组a[i]=0;j=0;//使记录间隔的重新开始计数}if(k==num)//当b数组有了a数据全部数据时,结束循环break;}printf("标准顺序为:");for(k=0;k7、num,start;printf("请输入总数:");scanf("%d",&num);printf("请输入间隔数:");scanf("%d",&count);printf("请输入起始位置:");scanf("%d",&start);printf("");while(start>num){printf("请重新输入:");printf("请输入总数:");scanf("%d",&num);printf("请输入起始位置:");scanf("%d",&start);}printf("请输入数据:");for(i=0;i8、)scanf("%d",&a[i]);printf("");i=start-1;k=0;for(j=1;;){i++;
6、um;if(a[i]!=0)//只有a[i]不为零时,才能j++j++;if(j==count)//达到间隔数{b[k++]=a[i];//将a数组的值赋给b数组a[i]=0;j=0;//使记录间隔的重新开始计数}if(k==num)//当b数组有了a数据全部数据时,结束循环break;}printf("标准顺序为:");for(k=0;k7、num,start;printf("请输入总数:");scanf("%d",&num);printf("请输入间隔数:");scanf("%d",&count);printf("请输入起始位置:");scanf("%d",&start);printf("");while(start>num){printf("请重新输入:");printf("请输入总数:");scanf("%d",&num);printf("请输入起始位置:");scanf("%d",&start);}printf("请输入数据:");for(i=0;i8、)scanf("%d",&a[i]);printf("");i=start-1;k=0;for(j=1;;){i++;
7、num,start;printf("请输入总数:");scanf("%d",&num);printf("请输入间隔数:");scanf("%d",&count);printf("请输入起始位置:");scanf("%d",&start);printf("");while(start>num){printf("请重新输入:");printf("请输入总数:");scanf("%d",&num);printf("请输入起始位置:");scanf("%d",&start);}printf("请输入数据:");for(i=0;i8、)scanf("%d",&a[i]);printf("");i=start-1;k=0;for(j=1;;){i++;
8、)scanf("%d",&a[i]);printf("");i=start-1;k=0;for(j=1;;){i++;
此文档下载收益归作者所有