顺序表实现约瑟夫环的问题C语言

上传人:re****.1 文档编号:506433389 上传时间:2023-10-27 格式:DOC 页数:12 大小:159.50KB
返回 下载 相关 举报
顺序表实现约瑟夫环的问题C语言_第1页
第1页 / 共12页
顺序表实现约瑟夫环的问题C语言_第2页
第2页 / 共12页
顺序表实现约瑟夫环的问题C语言_第3页
第3页 / 共12页
顺序表实现约瑟夫环的问题C语言_第4页
第4页 / 共12页
顺序表实现约瑟夫环的问题C语言_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《顺序表实现约瑟夫环的问题C语言》由会员分享,可在线阅读,更多相关《顺序表实现约瑟夫环的问题C语言(12页珍藏版)》请在金锄头文库上搜索。

1、顺序表实现约瑟夫环的问题C语言计算机科学与工程学院算法与数据结构试验报告一10级讣算机工程02计算机大楼讣工教研专业班级 试验地点 室 学生学号1005080222指导教师蔡琼学生姓名肖宁博试验时间2012-2-29试验项口算法与数据结构试验类别 基础性()设计性()综合性(?)其它()(1)掌握用VC+上机调试线性表的基本方法;试(2)掌握顺序表的存储结构以及基本运算的实现。验目的求及要成绩评定表类别评分标准分值得分合计积极出勤、遵守纪律上机表现30分主动完成设计任务程序代码规范、功能正确程序与报告70分报告详实完整、体现收获讣算机科学与工程学院备注:评阅教师:日期:年 月 日试验内容一、实

2、验目的和要求1、实验目的:(1) 掌握用VC+上机调试线性表的基本方法;(2) 掌握顺序表的存储结构以及基本运算的实现。2、实验内容约瑟夫环问题:设编号为1, 2, 3,,n的n(n0)个人按顺时针方向围坐一圈,m为任意一个正整数。从第一个人开始顺时针方向自1起顺序报数,报到m时停止并且报m的人岀列,再从他的下一个人开始重新从1报数,报到m时停止并且报m的人出列。如此下去,直到所有人全部出列为止。要求设计一个程序模拟此过程,对任意给定的m和n,求出出列编号序列。3、实验要求:用顺序表实现。二、设计分析根据实验要求,采用顺序表来完成本次实验。实验中定义了两个顺序表,一个用来存储n个人的序号,另一

3、个用来存储n个 人的出队顺序及序号。程序中充分考虑了如果出队的元素大于队列的元素个数时应该有的情况,如果 出现这样的错误就提示否则继续出队三、源程序代码#include#includedefine MAXSIZE 10 /宏替换最大值typedef structint dataMAXSIZE;int length;Sqlist;void CreatList (Sqlist *&L, int a, int n) /创建顺序表L二(Sqlist *)malloc(sizeof(Sqlist);2算法与数据结构试验报告计算机科学与工程学院for (int i二0;in;i+)L-dataiZ=ai;

4、L-lengthen;void InitList(Sqlist *&L) /初始化顺序表L二(Sqlist *)malloc(sizeof(Sqlist);L-length二0;void DestoryList(Sqlist *&L) /释放顺序表空间free (L);void josephus(Sqlist *&L) /约瑟夫环的核心代码int t二0;int nrO;printff请输入数到儿个人出来);printf(n);scanf&m);if(mLlength)printf C没有这么多人呀?(?_?)?);elseprintf列顺序为:”);for(int q二L-length;q=

5、l;q)t=(t+m-l)%q;printf(n);printfLdatat);for(int j=t+l;jdataj-1=Ldataj;printf(n);void main()3算法与数据结构试验报告计算机科学与工程学院Sqlist *s;InitList(s);int aMAXSIZE;int n=0;printfC请键入要输入儿个数);printf(n);scanf&n);for(int i二0;in;i+)ai=i+l;CreatList (s, a, n);josephus (s);DestoryList (s);printf(n);四、测试用例(尽量覆盖所有分支)1.当输入1,

6、 2, 3, 4。n的这 些数字范围以内的话,可以得到正确的结果如图:rni沪布入敦引儿个人IL无qB&2Mnn any key w aonviniu-2X输入的n比较大的时候的请况如图:4算法与数据结构试验报告计算机科学与工程学院JCjXj淋荷馥引儿个人IL无T刘顷序窝iw2M3H413Stf&tiKUVtf11220M45RG?fl9?2142f38516:17%H7列15Z42G69939tIL2?42S.95213?54zt91w2554A64呕32244“8Sa32S2r 3?52?6356373nSi7Mh1SV3371L34岁V74?兀49gG9Dt9274413G5M39朋H4

7、st17R1*1处if*onuca c(xnclnu.c3当输入序列少,出对数大时:! 人JFt*eia onty iev ca concinu.c4当输入要出列的元素大于队列里的元素,这将会提示错误如图:5算法与数据结构试验报告计算机科学与工程学院忖倉逆么裕人= & 4 ( rrcss any to convinv.c.rj5.当你的输入岀队的序列数有误时将会提示错误6 当你的要输入的数大于定义的最大值时提示错误如图:6算法与数据结构试验报告计算机科学与工程学院7.当你的要输入的数小于定义的最大值时提示错误如图:7算法与数据结构试验报告计算机科学与工程学院五、实验总结先后学习了 C/C+,对

8、编程语言基本上有一些了解,但在数据结构试验程序设计 过程中还是学到了很多。经过两天的设计,在不断翻阅以前资料的情况下,有针对性的复习了 C/C+中 指针、循环的相关理论知识和vc6.0的基础知识和应用技巧,最后比较成功的完成 了本次的设计。本次设计是运用已学的线性表中顺序表的相关内容,III于以前的指针方面知识 没有学好,刚开始时有些措手不及,尤其是运用指针申请动态内存,遇到了不小的 麻烦,程序检查时没有错误,但运行不了,经过仔细的思考,终于发现了问题所 在,特别高兴。程序运行后,开始考虑各种BUG,比如输入的数大于数组定义的最大值的时候 抑或是数组的数小于应该输入的最小值(比如0),比如输入

9、的要出列的元素大于队 列中已有的元素抑或是小于数组中应该出现的元素,比如一些错误输入等等之内的 BUG都考虑之后的问题。然后思考与反思后,发现程序还是有美中不足的地方,算法的核心存在一些不 足,比如依次从后往前挪动一个元素的时候存在一些效率上的问题,当元素较多 时,效率不高考虑到可以采用标记法,把出队元素标记为0,以后的出队的时候 跳过,0而不是进行挪动,这样程序的效率就大大提高了本次实验运用的是C语言,大一时就学过了,在今后的试验中应该多尝试其他 的语言来写程序,提高自己思维的兼容性很重要。这次的设计让我学到了不少的东西,而且了解到编程在现今诸多行业中应用的 重要性以及今后的发展,可以说是受益匪浅,为今后开发相关系统奠定了坚实的理 论基础和总结了宝贵的开发经验。8算法与数据结构试验报告计算机科学与工程学院9算法与数据结构试验报告

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号