ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:17.64KB ,
资源ID:29323160      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29323160.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验四.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构实验四.docx

1、数据结构实验四贵州大学实验报告学院:计信学院 专业:通信工程 班级:通信091姓名何川学号0908060235实验组实验时间2011.12、指导教师陈静成绩实验项目名称二叉树操作实验目的1、熟悉二叉树结点的结构和对二叉树的基本操作及具体实现。2、利用递归方法编写对二叉树的各种遍历算法。3、掌握递归方法在二叉树中的使用。实验要求1、认真阅读和掌握本实验内容所给的全部程序。2、在Visual C+6.0集成开发环境下编写和调试所有程序。3、编写的所有算法须给出测试函数,并自行设计测试数据,对算法进行测试。4、保存和打印出程序运行结果,并结合程序进行分析。5、按照你对二叉树操作的需要,重新改写主文件

2、并运行,打印出主文件清单 和运行结果。实验原理Visual C+的编译环境下,独立完成实验要求的内容,独立完成编写、编以运行。实验仪器 安装了VC+6.0的PC机实验步骤1、 实现二叉树结点的定义和操作。该程序包括一个头文件,用来存储定义二叉树结构类型以及对二叉树进行各种操作的函数声明;第二个为操作的实现文件,用来存储每一种操作的具体函数定义以及主函数。二叉树的操作包括二叉树初始化、创建二叉树,判断二叉树是否为空,求二叉树的深度和结点数,遍历二叉树等。2、 已知二叉树的前序遍历序列和中序遍历序列,编写可唯一确定该二叉树的算法。3、根据所给的n个带权叶子结点,编写算法构造哈夫曼树和哈夫曼编码。实

3、验内容()typedef char ElemType;struct BTreeNode ElemType data; BTreeNode *left; BTreeNode *right;void InitBTree(BTreeNode *&BT);void CreatBTree(BTreeNode *&BT,char *a);bool EmptyBTree(BTreeNode *BT);void TraverseBTree(BTreeNode *BT);int BTreeDepth(BTreeNode *BT);int BTreeCount(BTreeNode &BT);void PrintB

4、Tree(BTreeNode *BT);#include #include using namespace std; void InitBTree(BTreeNode *&BT) BT=NULL;void CreatBTree(BTreeNode *&BT,char *a) const int MaxSize=100; BTreeNode *sMaxSize; int top=-1; BT=NULL; BTreeNode *p; int k; int i=0; while(ai) switch(ai) case : break; case (: if(top=MaxSize-1) cout栈空

5、间不够,请重新分配栈空间!endl; exit(1); top+; stop=p; k=1; break; case ): if(top=-1) cout二叉树广义表字符串错!data=ai; p-left=p-right=NULL; if(BT=NULL) BT=p; else if(k=1) stop-left=p; else stop-right=p; i+; bool EmptyBTree(BTreeNode *BT) return BT=NULL;void TraverseBTree(BTreeNode *BT) if(BT!=NULL) coutdataleft); Travers

6、eBTree(BT-right); int BTreeDepth(BTreeNode *BT) if(BT=NULL) return 0; else int i=BTreeDepth(BT-left); int j=BTreeDepth(BT-right); if(ij) return i+1; else return j+1; int BTreeCount(BTreeNode *BT) if(BT=NULL) return 0; else int i= BTreeCount(BT-left); int j= BTreeCount(BT-right); return i+j+1; void P

7、rintBTree(BTreeNode *BT) if(BT!=NULL) coutdata; if(BT-left!=NULL|BT-right!=NULL) coutleft); if(BT-right!=NULL) coutright); cout); void main() BTreeNode *bt; InitBTree(bt); char b50=A(B(C),D(E(F,G),H(,I); CreatBTree(bt,b); PrintBTree(bt); coutendl; cout前序:; TraverseBTree(bt); coutendl; cout二叉树的深度为:;

8、coutBTreeDepth(bt)endl; cout二叉树的结点总数为:; coutBTreeCount(bt)endl;BTreeNode *PreMinCreateTree(char pre,char min,BTreeNode *&p,int i,int j,int len) BTreeNode *p,*q; for(i=0;idata=prei; for(j=0;jleft=prei+1;(2) typedef char ElemType;struct BTreeNode ElemType data; BTreeNode *left; BTreeNode *right;BTreeN

9、ode *PreMinCreateTree(char pre,char min,BTreeNode *&p,int i,int j,int len);int Position(ElemType x, char a);void PrintBTree(BTreeNode *BT);#include PreMinCreateTree.h#include #include using namespace std;int Position(ElemType x, char a) int i; for(i=0;i8;i+) if(x=ai) return i;BTreeNode *PreMinCreate

10、Tree(char pre,char min,BTreeNode *&p,int i,int j,int len) int m,leftlen,rightlen; if(lendata=prei; m=Position(prei,min); leftlen=m-j; rightlen=len-(leftlen+1); PreMinCreateTree(pre,min,p-left,i+1,j,leftlen); PreMinCreateTree(pre,min,p-right,i+leftlen+1,m+1,rightlen); return p;void PrintBTree(BTreeNo

11、de *BT) if(BT!=NULL) coutdata; if(BT-left!=NULL|BT-right!=NULL) coutleft); if(BT-right!=NULL) coutright); cout); void main() char pre=a,b,c,d,e,f,g,h; char in=c,b,d,a,f,e,h,g; BTreeNode *p; int prestart=0; int preend=7; int instart=0; int inend=7; BTreeNode *bt; bt=PreMinCreateTree(pre,in,p,0,0,8);

12、PrintBTree(bt); coutendl;(3) ) typedef int ElemType;struct BTreeNode ElemType data; BTreeNode *left; BTreeNode *right;BTreeNode *CreateHuffman(ElemType a,int n);void HuffManCoding(BTreeNode *FBT,int len);ElemType WeightPathLength(BTreeNode *FBT,int len);void PrintBTree(BTreeNode *BT);#include huffma

13、n.h#include #include using namespace std;typedef int ElemType;struct BTreeNode ElemType data; BTreeNode *left; BTreeNode *right;BTreeNode *CreateHuffman(ElemType a,int n) BTreeNode*b,*q; b=new BTreeNode*n; int i,j; for(i=0;idata=ai; bi-left=bi-right=NULL; for(i=1;in;i+) int k1=-1,k2; for(j=0;jn;j+)

14、if(bj!=NULL&k1=-1) k1=j; continue; if(bj!=NULL) k2=j; break; for(j=k2;jdatadata) k2=k1; k1=j; else if(bj-datadata) k2=j; q=new BTreeNode; q-data=bk1-data+bk2-data; q-left=bk1; q-right=bk2; bk1=q; bk2=NULL; delete b; return q;ElemType WeightPathLength(BTreeNode *FBT,int len) if(FBT=NULL) return 0; el

15、se if(FBT-left=NULL&FBT-right=NULL) return FBT-data*len; else return WeightPathLength(FBT-left,len+1)+WeightPathLength(FBT-right,len+1); void HuffManCoding(BTreeNode *FBT,int len) static int a10; if(FBT!=NULL) if(FBT-left=NULL&FBT-right=NULL) cout节点权值为data的编码:; for(int i=0;ilen;i+) coutai ; coutleft

16、,len+1); alen=1; HuffManCoding(FBT-right,len+1); void PrintBTree(BTreeNode *BT) if(BT!=NULL) coutdata; if(BT-left!=NULL |BT-right!=NULL) coutleft); if(BT-right!=NULL) coutright); cout); void main() int i,n; BTreeNode *fbt=NULL; n=6; ElemType a6=3,9,5,12,6,15; fbt=CreateHuffman(a,n); cout以广义表的形式输出哈夫曼

17、树:; PrintBTree(fbt); coutendl; cout哈夫曼树的权:; coutWeightPathLength(fbt,0)endl; cout树中每个叶子结点的哈夫曼编码:endl; HuffManCoding(fbt,0);实验数据(1) A(B(C),D(E(F,G),H(,I)前序:A B C D E F G H I二叉树的深度为:4二叉树的结点总数为:9请按任意键继续. . .(2) a(b(c,d),e(f,g(h)请按任意键继续. . .(3) 以广义表的形式输出哈夫曼树:50(21(9,12),29(14(6,8(3,5),15)哈夫曼树的权:122树中每个叶子结点的哈夫曼编码:节点权值为9的编码:0 0节点权值为12的编码:0 1节点权值为6的编码:1 0 0节点权值为3的编码:1 0 1 0节点权值为5的编码:1 0 1 1节点权值为15的编码:1 1请按任意键继续. . .实验总结 通过本次试验,是我熟悉和基本掌握了二叉树结点的结构和对二叉树的基本操作及具体实现。为以后更进一步的学习打下了基础。指导教师意见签名: 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1