数据结构实验报告Haffman编码与译码.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告 实验 ? 实验目的和内容要求 实验 1.实验目的 .实验内容 输入若干个权,建立Huffman树,并进行Huffman编码与译码 (学生写出实验步骤及中间的结果与现象,在实验中做了什么,怎么做,发生的现象和中间结果) 哈夫曼树又称最优树,是一类带权路径长度最短的树,在开始写代码之前,先弄清几个步骤,先建立一个哈夫曼树。 #includeiostream using namespace std; typedef struct{ char a; int weight; int parent; int lchild; int rchild; }HTNode,*Huffman_Tree; 在完成哈夫曼树的过程中注意题目的要求来实现功能。 存放n个字符的权值(均0),构造哈夫曼树HT,并求出n个字符的哈夫曼编码。 int HuffmanCoding(Huffman_Tree HT,int n) { int m=2*n-1; HT=(Huffman_Tree)malloc((m+1)*sizeof(HTNode)); for(int k=1;k=n;k++) { cout请输入一个字符:; cinHT[k].a; cout请输入这个字符的权重:; cinHT[k].weight; HT[k].parent=-1; HT[k].rchild=-1; HT[k].lchild=-1; } for(int k1=n+1;k1=m;k1++) { HT[k1].a=0; HT[k1].weight=0; HT[k1].parent=-1; HT[k1].rchild=-1; HT[k1].lchild=-1; } for(int k2=n+1;k2=m;k2++) { int m1,m2; m1=m2=0x7fff;//最小的权重 int i=0; int j=0;//指向最小权重的位置 for(int p=1;pk2;p++) { if(HT[p].parent==-1) { if(HT[p].weightm1) { m2=m1; j=i; m1=HT[p].weight; i=p; } else if(HT[p].weightm2) { m2=HT[p].weight; j=p; } } } HT[i].parent=k2; HT[j].parent=k2; HT[k2].weight=HT[i].weight+HT[j].weight; HT[k2].lchild=i; HT[k2].rchild=j; } int b[5][5]; cout输出的哈弗曼编码为:endl; for(int k3=1;k3=5;k3++) { int f=k3; int c=f; int s=0; f=HT[k3].parent; while(f!=-1) { if(HT[f].lchild==c) { b[k3][s]=0; } else b[k3][s]=1; s++; c=f; f=HT[f].parent; } coutHT[k3].a:; for(int j=s-1;j=0;j--) {coutb[k3][j];} coutendl; } return 1; } 从叶子到根逆向求每个字符的哈夫曼编码 int main() { int n; Huffman_Tree ht; cout输入n(n为哈弗曼的节点数,n为大于2的数):; cinn; HuffmanCoding(ht,n); system(PAUSE); return 0; } 然后在主函数中调用哈夫曼编码函数,设定简单的输入信息的函数即可完成程序。 实验结果分析与总结 1、程序运行结果(请提供所完成的各道题运行结果界面截图): 2、在实验过程中遇到的问题与解决方法: 问题存在于对于从叶子到根的逆向求编码,此处思路有一些混乱,但大致理解了,经过诸多调试还是完成了基本思路。唯一的

文档评论(0)

zilaiye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档