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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构实验Word文档格式.docx

1、四、详细设计 1、建立哈夫曼的结构体数据类型:typedef struct int weight; int parent; int lchild; int rchild;HNode;HNode HuffNodeMAXNODE+1;/*定义哈夫曼结构数组*/typedef struct int bitMAXBIT; int start;HCode;HCode HuffCodeMAXLEAF;/*定义编码结构*/2、构造哈夫曼树的算法:void Huffman() /*哈夫曼树的构造及编码函数*/ int i,j,m1,m2,x1,x2,n,c,p; HCode cd; coutn; Count=

2、n; for(i=0;i2*n-1;i+) /*数组HuffNode初始化*/ HuffNodei.weight=0; HuffNodei.parent=-1; HuffNodei.lchild=-1; HuffNodei.rchild=-1; 请输入叶结点的权值:endl;i+) /*输入n个叶结点的权值*/ cout请输入第i+1HuffNodei.weight;n-1;i+) /*哈夫曼树的构造*/ m1=MAXVALUE; m2=MAXVALUE; x1=x2=0; for(j=0;jn+i;j+) /*找出两棵权值最小的子树*/ if(HuffNodej.weightm1&HuffN

3、odej.parent=-1) m2=m1; x2=x1; m1=HuffNodej.weight; x1=j; else if(HuffNodej.weightm2& m2=HuffNodej.weight; x2=j; /*将找出的两棵子树合并为一棵子树*/ HuffNodex1.parent=n+i; HuffNodex2.parent=n+i; HuffNoden+i.weight=HuffNodex1.weight+HuffNodex2.weight; HuffNoden+i.lchild=x1; HuffNoden+i.rchild=x2;3、哈夫曼编码的算法:Count;i+)

4、/*求每个叶结点的哈夫曼编码*/ cd.start=Count-1; c=i; p=HuffNodec.parent; while(p!=-1) /*由叶结点向上直到树根*/ if(HuffNodep.lchild=c) cd.bitcd.start=0; else cd.bitcd.start=1; cd.start-; c=p; p=HuffNodec.parent; for(j=cd.start+1;j+) /*保存求出的每个叶子结点的哈夫曼编码和编码的起始位*/ HuffCodei.bitj=cd.bitj; HuffCodei.start=cd.start; 3、源程序代码:#inc

5、ludeiomanip.h#define MAXVALUE 1000; /*定义最大权值*/#define MAXLEAF 30 /*定义哈夫曼树中叶结点个数*/#define MAXNODE MAXLEAF*2-1 /*结点总数*/#define MAXBIT 10 /*定义哈夫曼编码的最大长度*/int Count; for(i=0;哈夫曼编码为:i+)/*输出每个叶结点的哈夫曼编码*/ for(j=HuffCodei.start+1;j+) coutHuffCodei.bitj;void HuffmanTreeshow()/*显示哈夫曼树*/int i;coutnumsetw(10)we

6、ightparentlchildrchild2*Count-1;i+)HuffNodei.weightHuffNodei.parentHuffNodei.lchildHuffNodei.rchildvoid main() Huffman();哈夫曼树双亲孩子表示:n HuffmanTreeshow();5、测试运行 (1).测试数据如下: 7,12,23,3,19,31 (2).输出结果应为:哈夫曼编码:0101 011 10 0100 00 11哈夫曼树的表示:num weight parent lchild rchild0 7 6 -1 -11 12 7 -1 -12 23 9 -1 -13 3 6 -1 -14 19 8 -1 -15 31 9 -1 -16 10 7 3 07 22 8 6 18 41 10 4 79 54 10 2 510 95 -1 8 9(3).程序运行结果如下:6、心得总结 通过本次实验,让我对一个程序的数据结构有了更全面更进一步的认识。在编写这个程序的过程中,我复习了之前学的一些基本语法,进一步学习了构造哈夫曼树的算法以及实现哈夫曼树编码的算法。体会了学以致用、突出自己劳动成果的喜悦心情,也从中发现自己平时学习的不足和薄弱环节,从而加以弥补。

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

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