哈夫曼编码译码地设计与实现

哈夫曼编码译码地设计与实现

ID:39998649

大小:234.60 KB

页数:23页

时间:2019-07-16

哈夫曼编码译码地设计与实现_第1页
哈夫曼编码译码地设计与实现_第2页
哈夫曼编码译码地设计与实现_第3页
哈夫曼编码译码地设计与实现_第4页
哈夫曼编码译码地设计与实现_第5页
资源描述:

《哈夫曼编码译码地设计与实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用文档软件学院课程设计报告设计名称:数据结构课程设计选题名称:哈夫曼编码/译码的设计与实现姓名:学号:专业班级:移动一班系(院):软件学院设计时间:2014.6.1~2014.6.4文案大全实用文档目录一、需求分析----------------------------------3二、系统设计----------------------------------3三、程序流程图-------------------------------10四、实现代码----------------------------------13五、总

2、结----------------------------------------23六、参考书目----------------------------------23文案大全实用文档一、需求分析哈夫曼编码是一种应用广泛且非常有效的数据压缩技术,哈夫曼编码是一种编码方式,以哈夫曼树,带权路径长度最小的二叉树,经常应用于数据压缩。哈夫曼编码使用一张特殊的编码表将源字符进行编码。这张编码表的特殊在于,它是根据每一个源字符出现的估算概率而建立起来的。哈夫曼编码的应用很广泛,利用哈夫曼树求得的用于通信的二进制编码成为哈夫曼编码,树中从根到

3、每个叶子都有一条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为和各个叶子对应的字符的编码,这就是哈夫曼编码。哈夫曼译码输入字符串可以把它编译成二进制代码。输入二进制代码时可以编译成字符串。二、系统设计构造哈夫曼树时,使用静态链表作为哈夫曼树的存储。在构造哈夫曼树时,设计一个结构体数组HuffNode保存哈夫曼树中各结点的信息,根据二叉树的性质可知,具有n个叶子结点的哈夫曼树共有2n-1个结点,所以数组HuffNode的大小设置为2n-1,求哈夫曼编码时使

4、用一维结构数组HuffCode作为哈夫曼编码信息的存储。求哈夫曼编码实际上就是在已建立的哈夫曼树中,从叶子结点开始,沿结点的双亲链域回退到根结点,每回退一步,就走过了哈夫曼的一个分支,从而得到一位哈夫曼编码值。由于一个字符的哈夫曼编码就是从根结点到相应叶子结点所经过的路径上各分支所组成的0、1序列,因此先得到的分支代码为所求编码的低位码,后得到的分支代码为所求的高位码1、初始化功能模块此功能模块的功能为从键盘接受字符集大小n,以及n个字符和n个权值。2、建立哈夫曼编码的功能模块此模块功能为使用1中得到的数据按照教材中的构造哈弗曼的算

5、法构造哈弗曼树,即将HuffNode数组中的各个位置的各个域都填上相关的值,并将这个结构体数组存于文件nodedata.dat中。函数原型为:voidCreat_Haffmantree(int&n){HNodeType*HaffNode=newHNodeType[2*n-1];inti,j;intm1,m2,x1,x2;for(i=0;i<2*n-1;i++){HaffNode[i].weight=0;HaffNode[i].parent=-1;HaffNode[i].lchild=-1;HaffNode[i].rchild=-1;

6、文案大全实用文档HaffNode[i].inf='0';}for(i=0;i>HaffNode[i].inf;cout<<"请输入该字符的权值"<>HaffNode[i].weight;}for(i=0;i

7、;x2=x1;m1=HaffNode[j].weight;x1=j;}else{if(HaffNode[j].parent==-1&&HaffNode[j].weight

8、d=x2;HaffNode[n+i].rchild=x1;HaffNode[n+i].inf=NULL;}cout<<"显示存储的哈弗曼树信息:"<

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

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

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