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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

猴子选大王-课程设计文档Word格式.doc

1、2、课程设计的任务4三、设计方案与实施(小三号、黑体、加粗)41、总体设计42、详细设计63、程序清单74、程序调试与体会95、运行结果(截图)10四、结 论11五、致 谢12六、参考文献121、设计的目的与要求:132、设计进度及完成情况13摘 要线性链表是一种重要而且使用广泛的数据结构,用链表所表示数据元素之间的逻辑关系是由节点中的指针指示的,而循环链表的特点是表种最后一个节点的指针指向头结点,整个链表形成一个环,用循环链表作为本课题的数据存储结构,充分考虑了循环链表的特点仅通过对两个循环链表的出、入列操作,大大降低空间复杂度就简单的实现了要求,动态地模拟出了猴子选大王问题中猴子循环报数的

2、情况。关键词:数据结构 线性链表 存储结构 空间复杂度(35个)Abstract Linear list is an important and extensive use of the data structure,List said that the data used by the logic of relations between the elements by the node in the direction of the pointer,The circulation list of the characteristics of the species list is the

3、last node of the indicators point to the first node, the entire list to form a ring,With the cycle of the list as the subject of data storage structures, taking into account the full cycle through the list of the characteristics of only two out of circulation list, out into operation, greatly reduce

4、 the complexity of space on the realization of a simple request,To simulate the dynamics of the monkey king election issue in a number of monkeys circulation SituationKey words: Data Structure, Linear List, Storage structure,Space complexity数据结构课程设计 -猴子选大王问题设计一、引 言数据结构是一门专业技术基础课,它对学习者的的要求很明确:学会分析、研究

5、计算机加工的数据结构的特性,以便为应用设计所需的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析的技术。其次,该课程的学习过程也是复杂程序设计的训练过程,要求学习者编写的程序结构或设计的程序结构体清楚、正确、易读,符合软件工程的规范。循环链表是一种重要的链式结构,其特殊性在于需附设两个指针分别指示表头元素及表尾元素的位置且表头和表尾相邻接,臆造的环状空间巧妙的解决了需循环依次删除元素的约瑟夫问题。本设计采用目前最通用的程序设计语言之一C语言作为数据结构和算法的描述语言,循环链表作为数据存储结构。 充分考虑了循环链表的特点仅通过对两个循环链表的出、入列操作,就简

6、单的实现了要求,动态的模拟出了猴子选大王问题中猴子循环报数的情况。该程序通俗易懂且实用性强,其他类似的算法均可借鉴和参考使用。并且该程序清单详细具体、全面、具有很强的可读性。 二、设计目的与任务1、课程设计的目的1) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;训练学生灵活应用所学数据结构的基本知识,熟练的完成问题分析、算2) 法设计、编写程序,求解出指定的问题;3) 训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养严谨的科学态度和良好的工作作风;4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力

7、。2、课程设计的任务问题描述:一堆猴子都有编号,编号是1,2,3 .m ,这群猴子(m个)按照1到m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。课题要求:输入数据m,n 其中m,n 为整数,n输出形式为提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号三、设计方案与实施1、总体设计/写总体的设计思想采用两个循环队列反复出队列与入队列来进行“舞伴配对”。程序中主要用到以下抽象数据类型:1) 设定链表抽象数据类型的定义ADT struct 对象数据(整数) 操作对象:struct monkey *create()

8、 建立链表 struct monkey *findout(start,n) 找出被淘汰的猴子的上一个 Struct monkey *letout(last) 删掉被淘汰的猴子,返回的指针值指向下一个猴子。基本操作(1) initring(int n,linklist r) 操作结果:构造一个具有n个元素的循环链表r。(2) iinklist delete(int n,int k,linklist r)初始条件:链表r已存在。循环依次删除问题对应所需位置的元素并当即输出其值,用指针r记录其最后元素的位置。ATD linklist(3) outring(int n,linklist r)特殊输出链

9、表保留的最后一个元素,即猴子大王的序号。程序包含两个模块(1) 主程序模块,其中主函数为int main输入信息;根据输入要求进行删除和输出;输出结果;(2) 循环链表模块实现具体删除输出操作。2) 两模块之间的简单调用关系主函数模块循环队列模块循环链表模块图1 模块调用图2、详细设计/对几个主要功能函数作出相应的说明1) 各个函数之间的调用关系主函数最后元素输出操作链表循环删除输出操作数据输入输出序号图2 函数调用关系图2) 函数设计程序设计中主要包括下列函数LinkList initring(int n,linklist r) 构造一个含n个元素的循环链表;LinkList delete(

10、int n,int k,linklist r) 循环删除报k号的元素; 循环输出所删除的元素;记录链表最后所保留的元素的位置;void outring(int n,linklist r) 输出链表最后保留的元素,即猴子大王的序号;3、程序清单/整个程序的运行清单#include stdio.h #include stdlib.h typedef struct node int data; struct node *next; listnode,*linklist; linklist initring(int n,linklist r) /创建一个循环单链表 linklist p,q; int

11、i; r=q=(listnode *)malloc(sizeof(listnode); /两个指针指向首位置 for(i=1;idata=i;next=p; q=p; p-data=n;next=r; /头尾相连 r=p; /指向头节点位置 return r; linklist deleted(int n,int k,linklist r) int i,j;p=r; /p移至头节点位置=n-1;i+) /循环n-1次,即只需删除n-1个节点,最后剩下猴子大王 for(j=1;jnext; /p循环移至下一个位置 q=p-next=q- /报k号的猴子出列,即删除p-next printf(%4

12、d,q-data); if(i % 6=0) printf(n); free(q);return r; /记录猴子大王位置并传递 void outring(int n,linklist r) linklist p; p=r; /获得猴子大王位置 猴子大王:%4dn,p-void main() /主函数 linklist r; int n,k; linklist initring(int n,linklist r); linklist deleted(int n,int k,linklist r); void outring(int n,linklist r);printf(请输入猴子总数 monkey number= scanf(%d,&n);请输入将出列猴子的报数号:k);下列序号的猴子因报%d号而依次出列:,k); r=initring(n,r); r=deleted(n,k,r); outring(n,r); 4、程序调试与体会通过这次课程设计,我们受益颇多:首先,上课时请的理论知识,似乎很容易接受,以及各种算法都能够比较轻松的理解,但是在真正的运用过程中,并

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

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