- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
广工数据结构课设-平衡二叉树演示(文档尾部含源码下载地址)课案
课程设计报告
课程名称 数据结构课程设计
学 院 计算机学院
专业班级 计科9班
学 号
学生姓名
指导教师 苏庆
2015 年 7 月 6 日
需求分析
程序《平衡二叉树的演示》是对平衡二叉树的创建、插入、删除、查找、合并、分裂功能的实现,以及用凹入表的形式将其展示给用户。
输入的形式是数字,无论对功能的选则还是对数据的录入,都是以数 字的形式进行输入,无需使用文件保存数据。输入值得范围在使用过程 中会有说明。
输出的形式是在Dos界面进行输出,
程序所能达到的功能:
A.创建一棵非空平衡二叉树
B.创建一棵空的平衡二叉树
C.向平衡二叉树中添加结点
D.从平衡二叉树中删除结点
E.在平衡二叉树中查找结点
F.以凹入表的形式输出一棵二叉树
G.以括号表示法输出一棵二叉树
附加功能:
F.合并两棵平衡二叉树
H.分裂一棵平衡二叉树
概要设计
本程序涉及到的数据类型有:链栈,链队列,平衡二叉树,
结构体数组
(2)主程序是负责对各个功能进行展示,然后根据输入来选择进行相对应 的功能,代码如下:
int main(){
int m;
BBSTree T = NULL;
SetColor();
InitView();
printf(\n\t\t\t 请输入你的选择:);
scanf(%d,m);
getchar();
while(1){
switch(m){
case 1:
T = item_1();
break;
case 2:
item_2(T);
break;
case 3:
item_3(T);
break;
case 4:
item_4(T);
break;
case 5:
item_5(T);
break;
case 6:
item_6();
break;
case 7:
item_7();
break;
}
if(m==8){
item_8();
break;
}else if(m8||m1){
system(CLS);
InitView();
printf(\n\t\t\t 输入错误,请重新输入!!\n);
}
printf(\n\t\t\t 请输入你的选择:);
scanf(%d,m);
getchar();
}
return 0;
}
各模块之间的关系
三、详细设计
数据类型的定义
/*存放输入数据的数组结构体*/
typedef struct ArrayNode{
RcdType data;
ArrayNode *next;
}ArrayNode, *Array;
/*平衡二叉树结构体*/
typedef struct BBSTNode{
RcdType data;
int bf;
BBSTNode *lchild, *rchild;
}BBSTNode,*BBSTree;
/*链队列结构体*/
typedef struct LQNode{
BBSTree elem;
struct LQNode *next;
}LQNode, *QueuePtr;
/*队列结点结构体*/
typedef struct{
QueuePtr front;
QueuePtr rear;
}LQueue;
/*栈结点结构体*/
typedef struct LSNode{
BBSTree data; //数据域
struct LSNode *next; //指针域
}LSNode, *LStack; //结点和链栈类型
伪代码:
建树操作
begin
BBSTree T
Array a
a = GetInputToArray(); //获取到输入的数组
While a!=NULL{
InsertAVL(T, a-data)
a = a-next
}
End
B.插入结点
begin
if(NUL
原创力文档


文档评论(0)