ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:624.40KB ,
资源ID:20865642      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20865642.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计报告约瑟夫环Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计报告约瑟夫环Word文档下载推荐.docx

1、开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。1.2 课程设计要求1.参考相应的资料,独立完成课程设计任务书。2.交规范课程设计报告和软件代码。2 课程设计原理2.1 课设题目粗略分析根据课设题目要求,拟将整体程序分为四大模块。此四个模块相互独立,没有嵌套调用的情况,以下是四个模块的大体分析:1.main()函数是主要的控制函数,main()函数主要负责存储用户输入的基本数据以及调用其他子函数模块,

2、在main()函数中还存在一个比较小的函数模块exit(0),该函数模块负责终止程序运行,另外还有两个子函数模块,分别是random()函数模块与solid()函数模块,这两个函数模块分别各自负责自己所要处理的数据以及输出功能;2.在程序运行之后,在程序主界面出现之后,当用户自己输入了自己想要实现的功能模块所在的数字选项后,立即进入主函数模块之中,当用户输入了所有的必要数据之后,按照用户选定的数字选项所要实现的功能调用相应的子函数;3.如果用户选择的是系统随机产生密码的选项,则main()函数就调用random()子函数模块,在random()函数模块中,将会随机产生各个参与者的密码,并且同时

3、建立链表来存储、处理这些数据,在完成了所有的操作之后,random()函数就将输出结果,反之,如果用户选择的是用户自己输入密码的选项,则main()函数就调用solid()函数模块,在solid()函数模块中,将会提醒用户自己一个个的输入每个参与者的密码,与此同时建立链表来存储、处理这些数据,在完成了所有的操作之后,solid()函数就将输出结果。2.2 原理图介绍2.2.1 功能模块图图2.1 功能模块图 2.2.2 流程图分析1.如图2.2,random()函数的执行过程如下; N Y图2.2 random()函数流程图2.如图2.3,solid()函数的执行过程如下;图2.3 solid

4、()函数流程图3.如图2.4,main()函数的执行过程如下。图2.4 main()函数流程图3 数据结构分析 3.1 存储结构 num code next 图3.1 数据存储结构3.2 算法描述 1. 用户输入数据;while(scanf(%d,&p)!=EOF) if(p=1) random(); else if(p=2) solid(); else exit(0); printf(*欢迎进入约瑟夫环问题求解系统*n n); printf(1.按照系统随机给出的密码进行 2.按照自己输入的密码进行 3.退出该系统nn*请输入您要实现的功能模块所在的数字选项!*nn 2. random()函

5、数随机产生各个参与者的密码,用户在此函数中输入第一个要报的数,此函数之后会排好各个参与者的出列顺序;or(i=1;inext=p; p-num=i;code=key; p-next=head-next; p=head; head=head- free(p); /释放头结点. do n第%d号成员的密码为:,p-num,p-code); /输出链表. p=p- while(p!=head);nn输入第一个报的数:n scanf(key);3. solid()函数提示用户输入各个参与者的密码及第一个要报的数,并且排好各个参与者的出列顺序。 for(i=1; scanf(请输入密码:4 调试与分析4

6、.1 调试过程在调试程序是主要遇到一下几类问题: 1.调试过程中,曾出现过缺少分号、括号之类的错误,还出现过运算顺序颠倒,致使运算出现了错误,在经过仔细的检查并且向人请教,终于得出了正确结果.这次的课程设计的代码比较冗长,所以等有了解题思路后,把代码都写上后难免会有很多错误。当第一次把整个程序写好后运行,出现了很多错误。不过经过一点点的改正,错误也慢慢地变少。这也说明做事要认真,尤其做计算机这方面工作的时候,因为计算机不容许一点点的错误,有了一点小错误和有一个大错误在计算机看来都是一样的,都不会得到结果。有些小错误,比如说少了个分号,变量忘了定义,数据溢出等都是些小错误,但也不能松懈。因为要注

7、意的地方很多,经过多次尝试,问题也就自然而然的解决了,而且以后遇到这方面的问题都会觉得比较得心应手。2.在随机设置每个结点的key时也曾是个问题,因为我做的随机函数一直都用不好,要不是每次随到的都是一样的,要么就是每次随到的数都很大,后来通过学长的耐心讲解才得以解决。在调试的过程中,类的优势很明显,能很简单的把问题解决,而不需要使用的其他的一些比较复杂的方法。4.2 程序执行过程*欢迎进入约瑟夫环问题求解系统*系统使用说明:1. 进入程序主界面后,会出现三个选项,按1则是随系统随机产生的密码进行该问题求解,按2则是随用户自己输入的密码进行该问题求解,按3则是退出系统;2. 选定了进行方式后,输

8、入该问题所涉及的总人数,如果用户按了1,则随机产生密码,用户则只再需要输入第一个人要报的数即可,如果用户按了2,则是用户自己手动输入密码,输入完了所有人的密码后,之后再输入第一个人要报的数;3. 随着程序的运行,结果就会随之出来,随后进入下一次该问题求解进程,直到用户自己选择退出该程序,该程序才会结束。参考文献1 严蔚敏,吴伟民.数据结构M.北京:清华大学出版社,2007.2 张长海,陈娟.C程序设计M.北京:高等教育出版社,2004. 3 谭浩强.C程序设计M.北京:清华大学出版社,2005.4 数据结构(用面向对象方法与C+描述),殷人昆等,清华大学出版社。5 算法与数据结构习题精解和实验

9、指导,宁正元等,清华大学出版社。6 张乃孝,裘宗燕.数据结构C+与面向对象的途径.北京:高等教育出版社,19987 周云静数据结构习题解析与上机指导北京:冶金工业出版社,20048 陈慧南数据结构C+语言描述北京:人民邮电出版社,20059 严蔚敏,吴伟民数据结构北京:清华大学出版社,1997 附 录(关键部分程序清单)程序代码#includestdlib.hstruct list int num,code; struct list *next;int main() void random(); void solid(); int p; while(scanf( return 0;void r

10、andom() int i,j,m=1; int key; / 密码. int n; /人数 .list *p,*s,*head; head=(list *)malloc(sizeof(list); /为头结点分配空间.输入人的总个数:n);n出列顺序为: do j=1; p=head; while(j j+; /报数过程. i=p-num; key=p-code;%d:第%d号成员出列n,m,i); m+; s-next=p- head=p- /重新定义head,下次循环的开始结点. free(p);/ 释放已出列的结点. n-; /人数减一. while(n0);void solid()

11、int i,j,m=1;课程设计总结:为期二周的课程设计快结束了,通过这次数据结构课程设计,我感受最深的就是对于循环链表的使用,可以说对循环链表有了比以前更进一步的认识,以前只是一知半解的,如果只给个题目自己根本不能把程序完整地编写出来,所以这次课程设计最大的收获就在于对循环链表有了一定的理解,包括其中的一系列操作,如建立一个循环链表,删除链表中的一个结点,增加一个结点等。在这次课程设计过程中需要我们一边设计一边探索,这这个过程当中我发现自己在数据结构方面知识掌握不够深入,对一些基本概念不能很好的理解,对一些数据结构不能够熟练的进行上机实现,这是自己比较薄弱的。学好基础知识是理论付诸实践的前提,这样理论和实践才能充分地结合起来。在以后的学习中,我还要努力改正,充分利用上机实验的机会提高自己。在程序的输入的时候,因为自己对键盘的不熟练,代码又很多很繁琐,常常会产生放弃的念头,从中我也感受到只有坚持到底,胜利才会出现。在调试程序的时候我也有所体会,虽然约瑟夫环问题不是很难,但调试的时候还是会出现很多错误,因此我们不能认为容易就不认真对待。在以后的学习中,要能不断发现问题,提出问题,解决问题,从不足之处出发,在不断学习中提高自己。指导教师评语:指导教师(签字): 年 月 日课程设计成绩

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1