2022年数据结构实验三归纳 .pdf
《2022年数据结构实验三归纳 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构实验三归纳 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验三实验课程名:二叉树的操作及应用专业班级:11计科( 3)班学号:39 姓名:廖万君实验时间:11.26 12.7 实验地点K4-206 指导教师:冯珊一、实验目的1、进一步掌握指针变量、动态变量的含义。2、掌握二叉树的结构特性,以及各种存储结构的特点和适用范围。3、掌握用指针类型描述、访问和处理二叉树的运算。二、实验内容1、以二叉链表作存储结构,试编写计算二叉树深度、所有结点总数、叶子结点数、双孩子结点个数、单孩子结点个数的算法(1)代码如下 : 1.Tree.h 头文件定义如下:#ifndef _Tree #define _Tree #include using namespace s
2、td; typedef char ElemType; typedef struct TreeNode ElemType data; struct TreeNode *lchild,*rchild; TreeNode,*Tree; void CreateTree(Tree &t,char *str,int len) static int i=0; if(i=len) return; if(stri=32) t=NULL; i+; return; t=(Tree)malloc(sizeof(TreeNode); t-lchild=NULL; t-rchild=NULL; memcpy(&t-dat
3、a,&stri+,sizeof(ElemType); CreateTree(t-lchild,str,len); CreateTree(t-rchild,str,len); void Deepth(Tree t,int deep,int &max) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - deep+; int flag=1; if(t-lchild) Deepth(t-lchild,deep,max); flag=0;
4、if(t-rchild) Deepth(t-rchild,deep,max); flag=0; if(flag) if(deepmax) max=deep; return; int NodeCount(Tree t) if(t=NULL) return 0; return NodeCount(t-lchild)+NodeCount(t-rchild)+1; int DoubleChildNodeCount(Tree t) if(t-rchild&t-lchild) return DoubleChildNodeCount(t-lchild)+DoubleChildNodeCount(t-rchi
5、ld)+1; else return 0; int SingleChildNodeCount(Tree t) if(!(t-rchild|t-lchild) return 0; else if(t-lchild&!t-rchild) return 1+SingleChildNodeCount(t-lchild); else if(t-rchild&!t-lchild) return 1+SingleChildNodeCount(t-rchild); else return SingleChildNodeCount(t-lchild)+SingleChildNodeCount(t-rchild)
6、; #endif 2.main 函数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - #include “ Tree.h ”int main() Tree t; cout ” 请输入一颗树的构造,空间点用空格表示,例如:abdf e c “ endl; char str56; gets(str); CreateTree(t,str,strlen(str); int max=0; Deepth(t,0,max); cout ” 树的
7、深度为: ” ; coutmaxendl; cout ” 树的所有结点数为: ” ; coutNodeCount(t)endl; cout ” 双孩子的结点个数为 : ” ; coutDoubleChildNodeCount(t)endl; cout ” 单孩子的结点数位 : ” ; coutSingleChildNodeCount(t)endl; return 0; (2)运行结果 : 2、 赫夫曼树与赫夫曼编码:已知某系统在通信联络中只可能出现8 种字符 a,b,c,d,e,f,g,h,其概率分别为 0.05 ,0.29 ,0.07 ,0.08 ,0.14 ,0.23 ,0.03 ,0.1
8、1 ,试设计 Huffman 编码,并计算其平均长度代码如下:#include “ Tree.h ”#include #include void GetCode(Tree t,int I,string str) static int flag=0; if(flag+) str+=i+48; if(t-lchild=NULL) coutdata.v” : ” strlchild,0,str); GetCode(t-rchild,1,str); bool HaveLeft(Tree t,int n,int flag,int &fmin) int I; int count=0; for(i=0;in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据结构实验三归纳 2022 数据结构 实验 归纳
限制150内