• 大小: 447KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-09-21
  • 语言: C/C++
  • 标签: 二叉树  数据结构  

资源简介

参考资料:《数据结构》(C语言版)严蔚敏&&吴伟民&&米宁著 要求选用顺序存储结构和二叉链表存储结构实现抽象数据类型二叉树的基本操作。有个亮点是利用字符在dos界面显示二叉树的结构形态。 里面包含了完整的源程序和实验报告文档。 实验报告包含了完整的步骤包括: 一.抽象数据类型二叉树的定义 二.存储结构定义(包括顺序存储和二叉链表)及各基本操作的实现 三.测试方案。包括详细的测试函数 四.测试结果。对所有操作的测试过程中二叉树的变化截图。 五.二叉树各基本操作时间复杂度与存储结构特点分析及对算法的改进设想。 六.实验总结和体会 实现的基本操作如下: InitBiTree(&T) DestroyBiTree(&T) CreateBiTree(&T) ClearBiTree(&T) BiTreeEmpty(T) BiTreeDepth(T) Root(T) Value(T,e) Assign(T,&e,value) Parent(T,e) LeftChild(T,e) RightChild(T,e) LeftSibling(T,e) RightSibling(T,e) InsertChild(T,p,LR,c) DeleteChild(T,p,LR) PreOrderTraverse(T,Visit()) InOrderTraverse(T,Visit()) PostOrderTraverse(T,Visit()) LevelOrderTraverse(T,Visit()) 下载清单: Base.h //全局常量、公共变量、公共函数等 BiTree.h //二叉链表二叉树实现 BiTree_Main.cpp //二叉链表二叉树测试程序 SqBiTree.h //顺序存储二叉树实现 SqBiTree_Main.cpp //顺序存储二叉树测试程序 抽象数据类型实现-二叉树-实验报告.doc

资源截图

代码片段和文件信息

#include“base.h“					// 公用头文件、公共常量及公共函数等
#include“bitree.h“ // 二叉树二叉链表基本操作
void Menu(); // 菜单函数
void Produce(char *str); // 随机产生二叉树先序序列函数

int main() // 主函数
{
BiTree Tbtinsert_bt;
char cmdstr[MAXSIZE]elem;
int loctemp;
InitBiTree(T); // 初始化二叉链表二叉树
Menu(); // 显示菜单
while(1)
{
ClearAera(); // 清空结果显示区
SetColor(3 );
printf(“请选择操作:(按‘Q‘退出)“);
SetColor();
cmd = getch();
ClearAera();
fflush(stdin);
switch(cmd)
{
case ‘0‘:// 随机创建一棵二叉树
while(cmd != ‘y‘ && cmd != ‘Y‘)
{
Produce(str); // 随机产生二叉树先序序列
CreateBiTree(Tstr);// 用此序列建树
PrintBiTree(T); // 树形结构显示
printf(“ 使用屏幕右下角创建的二叉树?\n“);
ShowBiTree(T); // 广义表形式显示
cmd = getch();
ClearAera();
}
break;
case ‘1‘:// 手动创建一棵二叉树
printf(“ 请按二叉树先序序列输入二叉树:(空结点用空格‘ ‘表示)\n “);
CreateBiTree(T);
PrintBiTree(T); // 树形结构显示二叉树
ClearAera();
printf(“ 二叉树创建成功!\n“);
ShowBiTree(T); // 广义表形式显示
getch();
break;
case ‘2‘:// 销毁二叉树
DestroyBiTree(T);
printf(“ 二叉树已被销毁!“);
PrintBiTree(T);
getch();
break;
case ‘3‘:// 清空二叉树
ClearBiTree(T);
printf(“ 二叉树已被清空!“);
PrintBiTree(T);
getch();
break;
case ‘4‘:// 判空
if(BiTreeEmpty(T)) printf(“二叉树是空二叉树。“);
else printf(“二叉树非空“);
getch();
break;
case ‘5‘:// 求深度
printf(“深度是 %d“BiTreeDepth(T));
getch();
break;
case ‘6‘:// 求左孩子
printf(“你想求哪个字符的左孩子?“);
do{
elem = getchar();
ClearAera();
bt = SearchBiTree(Telem); // 查找指定的结点值elem
if(!bt) printf(“ 你输入的结点不存在!请重新输入:“);
}while(!bt);
ClearAera();
bt = LeftChild(Tbt); // 求左孩子
if(bt) printf(“ %c的左孩子是%c“elembt->data);
else printf(“ %c没有左孩子“elem);
getch();
break;
case ‘7‘:// 求右孩子
printf(“ 你想求哪个字符的右孩子?“);
do{
elem = getchar();
ClearAera();
bt = SearchBiTree(Telem);
if(!bt) printf(“ 你输入的结点不存在!请重新输入:“);
}while(!bt);
ClearAera();
bt = RightChild(Tbt);
if(bt) printf(“ %c的右孩子是%c“elembt->data);
else printf(“ %c没有右孩子“elem);
getch();
break;
case ‘8‘:// 求左兄弟
printf(“ 你想求哪个字符的左兄弟?“);
do{
elem = getchar();
ClearAera();
bt = SearchBiTree(Telem);
if(!bt) printf(“ 你输入的结点不存在!请重新输入:“);
}while(!bt);
ClearAera();
bt = LeftSibling(Tbt);
if(bt) printf(“ %c的左兄弟是%c“elembt->data);
else printf(“ %c没有左兄弟“elem);
getch();
break;
case ‘9‘:// 求右兄弟
printf(“ 你想求哪个字符的右兄弟?“);
do{
elem = getchar();
ClearAera();
bt = SearchBiTree(Telem);
if(!bt) printf(“你输入的结点不存在!请重新输入:“);
}while(!bt);
ClearAera();
bt = RightSibling(Tbt);
if(bt) printf(“ %c的右兄弟是%c。“elembt->data);
else printf(“ %c没有右兄弟。“elem);
getch();
break;
case ‘a‘:// 先序遍历
if(!BiTreeEmpty(T))
{
printf(“先序遍历序列为:“);
PreOrderTraverse(TVisit);
}
else printf(“二叉树空,请先建树!“);
getch();
break;
case ‘b‘

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     831488  2009-11-06 16:41  抽象数据类型二叉树的实现-顺序存储与二叉链表存储\抽象类型实现-二叉树-实验报告.doc

     文件       2823  2009-06-29 00:39  抽象数据类型二叉树的实现-顺序存储与二叉链表存储\base.h

     文件      11686  2009-06-28 22:38  抽象数据类型二叉树的实现-顺序存储与二叉链表存储\BiTree.h

     文件       8242  2009-06-29 00:30  抽象数据类型二叉树的实现-顺序存储与二叉链表存储\SqBiTree.h

     文件       8049  2009-06-29 18:03  抽象数据类型二叉树的实现-顺序存储与二叉链表存储\BiTree_Main.cpp

     文件       6583  2009-06-29 18:03  抽象数据类型二叉树的实现-顺序存储与二叉链表存储\SqBiTree_Main.cpp

     目录          0  2009-11-06 17:01  抽象数据类型二叉树的实现-顺序存储与二叉链表存储

----------- ---------  ---------- -----  ----

               868871                    7


评论

共有 条评论