哈夫曼树应用

哈夫曼树应用

ID:47475753

大小:434.54 KB

页数:29页

时间:2020-01-11

哈夫曼树应用_第1页
哈夫曼树应用_第2页
哈夫曼树应用_第3页
哈夫曼树应用_第4页
哈夫曼树应用_第5页
资源描述:

《哈夫曼树应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一.具体任务题目:哈夫曼树应用功能:1.从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树并将它存于文件hfmTree中.将已在内存中的哈夫曼树以直观的方式(比如树)显示在终端上;2.中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中,并输出结果。同时将此字符形式的编码文件写入文件CodePrint中。3.利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中,并输出结果。二.软件环境Code::Blocks10.05三

2、.算法设计思想1.建立哈夫曼树函数voidHuffTree(HNodeHuff[],intn)//生成哈夫曼树{FILE*fp;chard;inti,j,w,m1,m2,x1,x2;for(i=0;i<2*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);//读入数据getchar()

3、;for(i=0;i

4、1和x2{if(Huff[j].parent==-1&&Huff[j].weight

5、].weight;Huff[n+i].lchild=x1;Huff[n+i].rchild=x2;}2.对哈夫曼树进行编码voidHuffmanCode(HNodeHuff[],intn)//生成哈夫曼编码{FILE*fw;HCodeHuffCode[MAXSIZE/2],cd;//MAXSIZE/2为叶结点的最大个数inti,j,c,p;for(i=0;i

6、;c=i;p=Huff[c].parent;while(p!=-1){if(Huff[p].lchild==c)cd.bit[cd.start]=0;elsecd.bit[cd.start]=1;cd.start--;c=p;p=Huff[c].parent;}for(j=cd.start+1;j

7、3.根据哈夫曼编码进行译码voiddecode(HNodeHuff[],intn)//依次读入电文,根据哈夫曼树译码{FILE*fs;inti,j=0;charb[MAXSIZE];i=2*n-2;//从根结点开始往下搜索printf("【输入电文,并进行译码】");getchar();printf("输入发送的编码(以'2'为结束标志):");gets(b);printf("译码后的字符为:");while(b[j]!='2'){if(b[j]=='0')i=Huff[i].lchild

8、;//走向左孩子elsei=Huff[i].rchild;//走向右孩子if(Huff[i].lchild==-1)//tree[i]是叶结点{printf("%c",Huff[i].ch);i=2*n-2;//回到根结点}j++;}printf("");if(Huff[i].lchild!=-1&&b[j]!='2')//电文读完,但尚未到叶子结点printf("ERROR");//输入电文4.菜单调用voidmenu(){printf("

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。