一、问题描述 2
1.1问题描述 2
1.1.1 猴子选王问题 2
1.1.2二叉树问题 3
1.2基本要求 3
1.2.1猴子选王问题 3
1.2.2二叉树问题 3
二、问题分析 3
2.1 猴子选王问题的分析 3
2.1.1需求分析 3
2.1.2过程分析 4
2.2二叉树求解问题 5
2.2.1需求分析 5
2.2.2过程分析 5
三、 数据结构描述 6
3.1猴子选王问题 6
3.2 二叉树求解问题 7
四、 算法设计 7
4.1猴子选王问题 7
4.1.1单循环链表解决猴子选王问题 7
4.1.2顺序结构(数组)解决解决猴子选王问题 10
4.2二叉树问题的求解 11
五、 详细程序清单 12
5.1猴子选王问题 12
5.1.1单循环链表解决猴子选王问题 12
5.1.2顺序结构(数组)解决解决猴子选王问题 15
5.2二叉树问题的求解 18
六、 程序运行结果 20
6.1猴子选王问题 20
6.1.1单循环链表解决猴子选王问题 20
6.1.2顺序结构(数组)解决解决猴子选王问题 21
6.2二叉树问题的求解 22
七、 分析与体会 23
一堆猴子都有编号,编号是1,2,3 ..m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
已知二叉树t中结点的中序和后序遍历序列,编写算法实现构造满足上述条件的二叉树。
1)利用单循环链表作为存储结构模拟此过程;
2)输入数据:输入m,n, m,n 为整数,n(3)输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号 ,建立一个函数来实现此功能。
选做内容】(1)添加在顺序结构上实现的部分;
(2)界面设计的优化。
1)假设二叉树t的结点值是字符。
2)建立的二叉树以二叉链表的存储结构进行存储。
3)输出二叉树的先序遍历序列。
要求:输入数据:输入整数m、n,m>n
输出形式:提示输入m只猴子,数到的数为n,输出为大王的猴子为几号,建立一个函数来实现此功能。
步骤:输入m、n后,进行1—n的报数,每数到n,则删除该猴子,直至只剩一只猴子,输出它的编号为猴子王。
假设m=5,n=3
则过程为:第一轮:1->2->3 淘汰3
第二轮:4->5->1 淘汰1
第三轮:2->4->5 淘汰5
第四轮:2->4->2 淘汰2
由此得出:4为猴子王!!!
要求:输入:某二叉树的中序和后序序列。
输出:求出其先序序列。
步骤:输入后序和中序序列后,判断是否存在树,存在则输出它的先序序列。
假设:中序为:dbeafcg
后序为:debfgca
则求出该树:
则它的先序为:abdecfg
typedef struct lnode
while(q->next !=p)
q->next = p->next ;/删除p节点。
s = p;
p = p->next;
free(s);
total--;
printf("the monkey king is:%d",p->data);
free(p);
return 0;
算法:int findmonkeyking(int m,int n)
while(m!=1)
if (count = n)
return i;
算法:treenode* binarytree(char* inorder, char* aftorder, int length)
if (length ==0)
treenode* node = new treenode;
node->elem = aftorder + length - 1);
printf("%c",node->elem);
int rootindex = 0;
for (;rootindex < length; rootindex++)
node->left = binarytree(inorder, aftorder, rootindex);
node->right = binarytree(inorder + rootindex + 1, aftorder + rootindex, length - rootindex + 1));
return node;
#include<>
#include<>
typedef struct lnode{
int data;
struct lnode *next;
linklist;
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 <=m;i++)
s =(linklist *)malloc(sizeof(linklist));
s->data = i;
s ->next = p->next;
p ->next =s ;
p = p->next;
初始化链表。
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...