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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(猴子选王问题和二叉树求解.docx)为本站会员(文档投稿赚钱)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

猴子选王问题和二叉树求解.docx

1、请输入学校名称毕业论文模板数据结构课程设计实验报告题 目 猴子选王问题和二叉树求解 学 院 数理与信息工程学院 专 业 计算机科学与技术 班 级 计科 132 学 号 201359225214、201359225205、201359225212 学生姓名 、 、 指导教师 编写日期 2015.6.25 目录一、问题描述 21.1 问题描述 21.1.1 猴子选王问题 21.1.2 二叉树问题 .31.2 基本要求 31.2.1 猴子选王问题 .31.2.2 二叉树问题 .3二、问题分析 32.1 猴子选王问题的分析 .32.1.1 需求分析 .32.1.2 过程分析 .42.2 二叉树求解问题

2、 52.2.1 需求分析 .52.2.2 过程分析 .5三、 数据结构描述 63.1 猴子选王问题 63.2 二叉树求解问题 .7四、 算法设计 74.1 猴子选王问题 74.1.1 单循环链表解决猴子选王问题 .74.1.2 顺序结构(数组)解决解决猴子选王问题 .104.2 二叉树问题的求解 11五、 详细程序清单 125.1 猴子选王问题 125.1.1 单循环链表解决猴子选王问题 .125.1.2 顺序结构(数组)解决解决猴子选王问题 .155.2 二叉树问题的求解 18六、 程序运行结果 206.1 猴子选王问题 206.1.1 单循环链表解决猴子选王问题 .206.1.2 顺序结构

3、(数组)解决解决猴子选王问题 .216.2 二叉树问题的求解 22七、 分析与体会 23一、问题描述1.1 问题描述1.1.1 猴子选王问题一堆猴子都有编号,编号是 1,2,3 .m ,这群猴子(m 个)按照 1-m 的顺序围坐一圈,从第 1 开始数,每数到第 n 个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。1.1.2 二叉树问题已知二叉树 T 中结点的中序和后序遍历序列,编写算法实现构造满足上述条件的二叉树。 1.2 基本要求1.2.1 猴子选王问题(1)利用单循环链表作为存储结构模拟此过程;(2)输入数据:输入 m,n, m,n 为整数,nn输出形式:

4、提示输入 m 只猴子,数到的数为 n,输出为大王的猴子为几号,建立一个函数来实现此功能.步骤:输入 m、n 后,进行 1n 的报数,每数到 n,则删除该猴子,直至只剩一只猴子,输出它的编号为猴子王。2.1.2 过程分析假设 m=5,n=3则过程为:第一轮:1-2-3 淘汰 3第二轮:4-5-1 淘汰 1第三轮:2-4-5 淘汰 5第四轮:2-4-2 淘汰 2由此得出:4 为猴子王!2.2 二叉树求解问题2.2.1 需求分析要求:输入:某二叉树的中序和后序序列。输出:求出其先序序列。步骤:输入后序和中序序列后,判断是否存在树,存在则输出它的先序序列。开始输入中序、后序序列求出这棵二叉树先序遍历结

5、束输出先序序列二叉树存在是否2.2.2 过程分析假设:中序为:DBEAFCG后序为:DEBFGCA则求出该树:则它的先序为:ABDECFG3、数据结构描述3.1 猴子选王问题typedef struct Lnodeint data;struct Lnode *next;linklist; /单循环链表解决猴子选王问题3.2 二叉树求解问题struct TreeNodestruct TreeNode* left;struct TreeNode* right;char elem; /树的二叉链表存储表示4、算法设计4.1 猴子选王问题4.1.1 单循环链表解决猴子选王问题算法:int monkey

6、king(int m,int n)int i,total;linklist *head,*p,*s,*q;head =(linklist *)malloc(sizeof(linklist);p = head;p-data = 1;p-next = p;for (i = 2;i data = i;s -next = p-next;p -next =s ;p = p-next; /初始化链表p = head;total = m; /保存总节点数q = head;while (total!=1)for(i=1;inext; /报数过程,p 指向要删除的节点while(q-next != p)q =

7、q-next; / q 指向 p 的节点的前驱q-next = p-next ;/删除 p 节点s = p;p = p-next;free(s);total-;printf(“the monkey king is:%dn“,p-data);free(p);return 0;4.1.2 顺序结构(数组)解决解决猴子选王问题算法:int findMonkeyKing(int m,int n)int a100;int i=1;int count=1;/记录报数的次数int total =m;for(;ielem = *(aftorder + length - 1);printf(“%c“,node-

8、elem);int rootIndex = 0;for (; rootIndex left = BinaryTree(inorder, aftorder, rootIndex);node-right = BinaryTree(inorder + rootIndex + 1, aftorder + rootIndex, length - (rootIndex + 1);return node;5、详细程序清单5.1 猴子选王问题5.1.1 单循环链表解决猴子选王问题#include#includetypedef struct Lnodeint data;struct Lnode *next;li

9、nklist;int monkeyking(int m,int n)int i,total;linklist *head,*p,*s,*q;head =(linklist *)malloc(sizeof(linklist);p = head;p-data = 1;p-next = p;for (i = 2;i data = i;s -next = p-next;p -next =s ;p = p-next; /初始化链表p = head;total = m; /保存总节点数q = head;while (total!=1)for(i=1;inext; /报数过程,p 指向要删除的节点/prin

10、tf(“【%d】 ”,p-data);while(q-next != p)q = q-next; / q 指向 p 的节点的前驱q-next = p-next ;/删除 p 节点s = p;p = p-next;free(s);total-;printf(“the monkey king is:%dn“,p-data);free(p);return 0;void main()int m,n;printf(“*WELCOME TO OUR DESIGN*n“);printf(“* MONKEY *n“);printf(“ - n“);printf(“ / n“);printf(“ C| |D n

11、“);printf(“ - / n“);printf(“ _/ n“);printf(“*n“);printf(“I KINGn“);printf(“ WANT THEn“);printf(“ TO BEn“);printf(“*n“);printf(“please input the number of m and n (mn):“);scanf_s(“%d%d“,monkeyking(m,n);system(“pause“);5.1.2 顺序结构(数组)解决解决猴子选王问题#include int findMonkeyKing(int m,int n)int a100;int i=1;in

12、t count=1;/记录报数的次数int total =m;for(;in):“);scanf_s(“%d%d“,printf(“the monkey king is :%dn“,findMonkeyKing(m,n);system(“pause“); 5.2 二叉树问题的求解#include#include #includetypedef struct TreeNodestruct TreeNode* left;struct TreeNode* right;char elem;TreeNode;TreeNode* BinaryTree(char* inorder, char* aftord

13、er, int length)if (length = 0)return NULL;TreeNode* node;node = (TreeNode*) malloc (sizeof(TreeNode);node-elem = *(aftorder + length - 1);printf(“%c“, node-elem);int rootIndex = 0;for (; rootIndex left = BinaryTree(inorder, aftorder, rootIndex);node-right = BinaryTree(inorder + rootIndex + 1, aftord

14、er + rootIndex, length - (rootIndex + 1);return node;int main(int argc, char* argv)char* post = “DEBFGCA“;char* mid = “DBEAFCG“;int length = strlen(mid);printf(“*WELCOME TO OUR DESIGN*n“);printf(“* BITREE *n“);printf(“ An“);printf(“ / n“);printf(“ B Cn“);printf(“ / / n“);printf(“ D E F Gn“);printf(“

15、*n“);printf(“中序序列为:“);printf(“%sn“, mid);printf(“后序序列为:“);printf(“%sn“, post);printf(“先序序列为:“);BinaryTree(mid, post, length);printf(“n“);system(“pause“);return 0;程序运行结果六、程序运行结果6.1 猴子选王问题6.1.1 单循环链表解决猴子选王问题6.1.2 顺序结构(数组)解决解决猴子选王问题6.2 二叉树问题的求解七、分析与体会短短一周的时间过去了,而我们的课程设计也接近尾声。这期间,有对自己学过的知识的一个回顾,也有新的知识的补

16、充。当有自己不懂时就翻阅资料,寻求解答;当有疑问的时候,有成员之间的讨论,老师的指导。初拿到该题目时,我们小组感觉无从下手,不知道该用什么样的数据类型,用什么样的储存结构,怎么实现题目中要求的功能。后来,通过从图书馆借的参考书和网上查到的资料,再经过小组成员的分析,思绪渐渐明朗起来,猴子选王问题我们采用单循环链表还有数组方法来实现;二叉树选择二叉树链表来实现。就根据这样的思路编程,我们初步将程序编译调试,过程中有很多问题但是我们组员在不对的调试中,发现问题,解决问题,终于把整个问题都解决了,把整个程序都编出来了。虽然,我们的课程设计已经完成,但是,对数据结构的学习似乎才是开始,以后要学习的还很多很多,前面要走的路还很远很远。而我们也要整装待发,在摸索中前进,在前进中不断摸索,让自己的路走得更远更长!八、参考资料1朱蓉,数据结构实验指导书2严蔚敏,吴伟民,数据结构(C 语言版).北京:清华大学出版社,19973严蔚敏,吴伟民,数据结构题集(C 语言版).北京:清华大学出版社,1997

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报