资源描述:
《大数据结构课程设计报告材料约瑟夫环完整版[]》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、*******************实践教学*******************兰州理工大学软件职业技术学院2011年春季学期算法与数据结构课程设计题目:约瑟夫环专业班级:姓名:学号:指导教师:成绩:24摘要约瑟夫环问题是典型的线性表的应用实例,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我们使用MICROSOFT公司的MicrosoftVisualC++6.0开发
2、工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。关键词:单循环链表;c语言;约瑟夫环;24序言数据结构是研究数据元素之间的逻辑关系的一门课程,以及数据元素及其关系在计算机中的存储表示和对这些数据所施加的运算。该课程设计的目的是通过课程设计的综合训练,培养分析和编程等实际动手能力,系统掌握数据结构这门课程的主要内容。本次课程设计的内容是用单循环链表模拟约
3、瑟夫环问题,循环链表是一种首尾相接链表,其特点是无须增加存储容量,仅对表的链接方式稍作改变,使表处理更加灵活,约瑟夫环问题就是用单循环链表处理的一个实际应用。通过这个设计实例,了解单链表和单循环链表的相同与不同之处,进一步加深对链表结构类型及链表操作的理解。通过该课程设计,能运用所学知识,能上机解决一些实际问题,了解并初步掌握设计、实现较大程序的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。24目录摘要1序言2目录3正文
4、4一、问题描述4二、逻辑设计5三、详细设计7四、程序代码13五、程序调试与测试13设计总结18参考文献19致谢20附录2124正文一、问题描述约瑟夫环问题描述的是:设编号为1,2,…,n的n(n>0)个人按顺时针方向围坐一圈,每个人持有一正整数密码。开始时选择一个正整数作为报数上限m,从第一个人开始顺时针方向自1起顺序报数,报到m时停止报数,报m的人出圈,将他的密码作为新的m值,从他在顺时针方向上的下一个人起重新从1报数。如此下去,直到所有人都出圈为止。令n最大值为100。要求设计一个程序模拟此过程,求出出
5、圈的编号序列。如下图分析:1234567890这是第一个人,他的密码是“1”,个他输一个m值,如果m=3,则从他开始向下走3个这就是第二步的位置,这时他的密码作为新的m值,即m=4,同时得到的第一个密码为4;4号出去向下走4,到9这儿;(这这一步完了剩余的为:1,2,3,5,6,,7,8,9,0,)这就是第三步的位置,这时他的密码作为新的m值,即m=9,同时得到的第二个密码为9;9号出去向下走9,到0这儿;继续走就行了(这儿剩余的就是:1,2,3,5,6,7,8,0)图1约瑟夫环问图解243271484约瑟
6、夫环原理演示图1234567第二部:第一次停下的位置,此时6号出列,并将他的值作为新的m值,即:新的m=8;从7好开始继续向下走8次,到1号的位置最后排序后的密码序列:(本图只演示前两步)8第三步:第二次,1号出列第四步:第三次,4号出列3第一步:给第一个人赋初始密码为:20则从它开始向下走20次,到6号位置241746147235图2约瑟夫环原理演示图二、逻辑设计1、循环链表抽象数据类型定义typedefstructLNode//定义单循环链表中节点的结构{intnum;//编号intpwd;//pass
7、wordstructLNode*next;//指向下一结点的指针}LNode;2、本程序包含一下几个模块(1)构造结点模块LNode*createNode(intm_num,intm_pwd)24{LNode*p;p=(LNode*)malloc(sizeof(LNode));//生成一个结点p->num=m_num;//把实参赋给相应的数据域p->pwd=m_pwd;p->next=NULL;//指针域为空returnp;}(2)创建链表模块voidcreateList(LNode*ppHead,intn
8、)(3)出队处理模块voidjose(LNode*ppHead,intm_pwd)(4)约瑟夫环说明输出模块voidinstruction()(5)菜单模块voidmenu()(6)主函数模块intmain()函数的调用关系图如下:24Case2:建立的约瑟夫环,并输出已建立的约瑟夫环:createList(LNode**ppHead,intn)输出该约瑟夫环的每个人的出列顺序:jose(LNode*ppHead