哈夫曼树应用.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.从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树并将它存于文件hfmTree中.将已在内存中的哈夫曼树以直观的方式(比如树)显示在终端上; 2. 中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中,并输出结果。同时将此字符形式的编码文件写入文件CodePrint中。 3.利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中,并输出结果。 二.软件环境 Code::Blocks10.05 三.算法设计思想 1.建立哈夫曼树函数 void HuffTree(HNode Huff[],int n) //生成哈夫曼树 { FILE *fp; char d; int i,j,w,m1,m2,x1,x2; for(i=0;i2*n-1;i++) //对数组Huff初始化 { Huff[i].ch= ; Huff[i].weight=0; Huff[i].parent=-1; Huff[i].lchild=-1; Huff[i].rchild=-1; } printf(输入%d个字符及它的权值: \n,n);//读入数据 getchar(); for(i=0;in;i++) { printf(请输入第%d个字符:,i+1); scanf(%c,d); getchar(); Huff[i].ch=d; printf(请输入第%d个字符的权值:,i+1); scanf(%d,w); getchar(); Huff[i].weight=w; } for(i=0;in-1;i++) //构造哈夫曼树并生成该树的n-1个分支结点 { m1=m2=32767; x1=x2=0; for(j=0;jn+i;j++) //选取最小和次小两个权值结点并将其序号送x1和x2 { if(Huff[j].parent==-1Huff[j].weightm1) { m2=m1; x2=x1; m1=Huff[j].weight; x1=j; } else if(Huff[j].parent==-1Huff[j].weightm2) { m2=Huff[j].weight; x2=j; } } //将找出的两棵子树合并为一棵新的子树 Huff[x1].parent=n+i; Huff[x2].parent=n+i; Huff[n+i].weight=Huff[x1].weight+Huff[x2].weight; Huff[n+i].lchild=x1; Huff[n+i].rchild=x2; } 对哈夫曼树进行编码 void HuffmanCode(HNode Huff[],int n) //生成哈夫曼编码 { FILE *fw; HCode HuffCode[MAXSIZE/2],cd; // MAXSIZE/2为叶结点的最大个数 int i,j,c,p; for(i=0;in;i++) //求每个叶结点的哈夫曼编码 { HuffCode[i].weight=Huff[i].weight; cd.start=MAXBIT-1; c=i; p=Huff[c].parent; while(p!=-1) { if(Huff[p].lchild==c) cd.bit[cd.start]=0; else cd.bit[cd.start]=1; cd.start--; c=p; p=Huff[c]

文档评论(0)

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

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

1亿VIP精品文档

相关文档