数据结构实验报告._计算机-数据结构与算法.pdf
《数据结构实验报告._计算机-数据结构与算法.pdf》由会员分享,可在线阅读,更多相关《数据结构实验报告._计算机-数据结构与算法.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.I .r .数据结构实验报告 一 题目要求 1)编程实现二叉排序树,包括生成、插入,删除;2)对二叉排序树进行先根、中根、和后根非递归遍历;3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。4)分别用二叉排序树和数组去存储一个班(50 人以上)的成员信息(至少包括学号、成绩 3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么?二 解决方案 对于前三个题目要求,我们用一个程序实现代码如下#include#include#include#include Stack.h /栈的头文件,没有用上 typedef int ElemType;/数据类型 typed
2、ef int Status;/返回值类型/定义二叉树结构 typedef struct BiTNode ElemType data;/数据域 struct BiTNode*lChild,*rChild;/左右子树域 BiTNode,*BiTree;int InsertBST(BiTree&T,int key)/插入二叉树函数 if(T=NULL)T=(BiTree)malloc(sizeof(BiTNode);T-data=key;T-lChild=T-rChild=NULL;return 1;else if(keydata)InsertBST(T-lChild,key);else if(ke
3、yT-data)InsertBST(T-rChild,key);else return 0;BiTree CreateBST(int a,int n)/创建二叉树函数 BiTree bst=NULL;int i=0;while(irChild)/右子树为空 重接它的左子树 q=T;T=(T)-lChild;free(q);else if(!(T)-lChild)/若左子树空 则重新接它的右子树 q=T;T=(T)-rChild;else q=T;s=(T)-lChild;while(s-rChild)q=s;s=s-rChild;(T)-data=s-data;/s 指向被删除结点的前驱 if
4、(q!=T)q-rChild=s-lChild;else q-lChild=s-lChild;free(s);return 1;/删除函数,在 T中 删除 key 元素 int DeleteBST(BiTree&T,int key)if(!T)return 0;else if(key=(T)-data)return Delete(T);else if(keydata)return DeleteBST(T-lChild,key);else return DeleteBST(T-rChild,key);历每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来分别用二叉排序树和数组去
5、存储一个班人以上的成员信息至少包括学号成绩项对比查找效率并说明在什么情况下二叉排序树效率高为什么二解决方案左右子树域插入二叉树函数创建二叉树函数右子树为空重接它的左子树若左子树空则重新接它的右子树指向被删除结点的前驱删除函数在中删除元素求深度打印二叉树先序非递归遍历中序非递归遍历后序非递归遍历主函数二叉排序打印二叉树非递归遍历二叉树退出输入要插入的节点插入成功树状图为输入要删除的节点删除成功树状图为非递归遍历二叉树先序遍历中序遍历后序遍历树状图为程序执行完毕对于第四小问要储存学生的三个信息需要把上面程序修.I .r .int PosttreeDepth(BiTree T)/求深度 int hr
6、,hl,max;if(!T=NULL)hl=PosttreeDepth(T-lChild);hr=PosttreeDepth(T-rChild);max=hlhr?hl:hr;return max+1;else return 0;void printtree(BiTree T,int nlayer)/打印二叉树 if(T=NULL)return;printtree(T-rChild,nlayer+1);for(int i=0;idata);printtree(T-lChild,nlayer+1);void PreOrderNoRec(BiTree root)/先序非递归遍历 BiTree p=
7、root;BiTree stack50;int num=0;while(NULL!=p|num0)while(NULL!=p)printf(%d ,p-data);stacknum+=p;p=p-lChild;num-;p=stacknum;p=p-rChild;printf(n);void InOrderNoRec(BiTree root)/中序非递归遍历 BiTree p=root;历每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来分别用二叉排序树和数组去存储一个班人以上的成员信息至少包括学号成绩项对比查找效率并说明在什么情况下二叉排序树效率高为什么二解决方案左右子树
8、域插入二叉树函数创建二叉树函数右子树为空重接它的左子树若左子树空则重新接它的右子树指向被删除结点的前驱删除函数在中删除元素求深度打印二叉树先序非递归遍历中序非递归遍历后序非递归遍历主函数二叉排序打印二叉树非递归遍历二叉树退出输入要插入的节点插入成功树状图为输入要删除的节点删除成功树状图为非递归遍历二叉树先序遍历中序遍历后序遍历树状图为程序执行完毕对于第四小问要储存学生的三个信息需要把上面程序修.I .r .int num=0;BiTree stack50;while(NULL!=p|num0)while(NULL!=p)stacknum+=p;p=p-lChild;num-;p=stacknu
9、m;printf(%d ,p-data);p=p-rChild;printf(n);void PostOrderNoRec(BiTree root)/后序非递归遍历 BiTree p=root;BiTree stack50;int num=0;BiTree have_visited=NULL;while(NULL!=p|num0)while(NULL!=p)stacknum+=p;p=p-lChild;p=stacknum-1;if(NULL=p-rChild|have_visited=p-rChild)printf(%d ,p-data);num-;have_visited=p;p=NULL
10、;else p=p-rChild;printf(n);历每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来分别用二叉排序树和数组去存储一个班人以上的成员信息至少包括学号成绩项对比查找效率并说明在什么情况下二叉排序树效率高为什么二解决方案左右子树域插入二叉树函数创建二叉树函数右子树为空重接它的左子树若左子树空则重新接它的右子树指向被删除结点的前驱删除函数在中删除元素求深度打印二叉树先序非递归遍历中序非递归遍历后序非递归遍历主函数二叉排序打印二叉树非递归遍历二叉树退出输入要插入的节点插入成功树状图为输入要删除的节点删除成功树状图为非递归遍历二叉树先序遍历中序遍历后序遍历树状图为
11、程序执行完毕对于第四小问要储存学生的三个信息需要把上面程序修.I .r .int main()/主函数 printf(-二叉排序树的实现-);printf(n);int layer;int i;int num;printf(输入节点个数:);scanf(%d,&num);printf(依次输入这些整数(要不相等));int*arr=(int*)malloc(num*sizeof(int);for(i=0;ino=no;T-name=name;T-score=score;T-lChild=T-rChild=NULL;return 1;else if(nono)InsertBST(T-lChild
12、,no,score,name);else if(keyT-data)InsertBST(T-rChild,no,score,name);else return 0;其他含参函数也类似 即可完成 50 个信息存储 用数组存储 50 个信息,查看以往代码#include#include using namespace std;class student private:int num;string name;int ob1;int ob2;int ara;public:void set(int a,string b,int c,int d);void show();int average();历每
13、次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来分别用二叉排序树和数组去存储一个班人以上的成员信息至少包括学号成绩项对比查找效率并说明在什么情况下二叉排序树效率高为什么二解决方案左右子树域插入二叉树函数创建二叉树函数右子树为空重接它的左子树若左子树空则重新接它的右子树指向被删除结点的前驱删除函数在中删除元素求深度打印二叉树先序非递归遍历中序非递归遍历后序非递归遍历主函数二叉排序打印二叉树非递归遍历二叉树退出输入要插入的节点插入成功树状图为输入要删除的节点删除成功树状图为非递归遍历二叉树先序遍历中序遍历后序遍历树状图为程序执行完毕对于第四小问要储存学生的三个信息需要把上面程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 报告 计算机 算法
限制150内