- 1、本文档共56页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Huffman树及其应用 Huffman树简介: 构造霍夫曼树的基本思想: 构造Huffman树的步骤: 操作要点2:按左0右1对Huffman树的所有分支编号! 例2:假设用于通信的电文仅由8个字母 {a, b, c, d, e, f, g, h} 构成,它们在电文中出现的概率分别为{ 0.07, 0.19, 0.02, 0.06, 0.32, 0.03, 0.21, 0.10},试为这8个字母设计哈夫曼编码。如果用0~7的二进制编码方案又如何? 为清晰起见,重新排序为:w={2, 3, 6, 7, 10, 19, 21, 32} 对应的哈夫曼编码(左0右1): 例3:设字符集为26个英文字母,其出现频度如下表所示。 采用C语言的编程方法在VC++6.0环境下实现本题目的要求。主程序流程图 压缩部分 #includestdio.h #includestring.h #includestdlib.h #define MAX_SIZE 1000000 #define n 150 #define m 2*n-1 typedef struct { char ch; int weight; int lchild,rchild,parent; }HuffmanTree; typedef HuffmanTree HTree[m]; typedef struct { char ch; char bits[n+1]; }HuffmanCode; typedef HuffmanCode HCode[n]; int FileRead(int count[],char s[],char filename[]) { int i=0,N=0,k=0,temp[n]; char c; FILE *rf; rf=fopen(filename,r); if (rf==NULL) { printf(cannot open file\n); exit(0); } for (i=0;in;i++) { temp[i]=0; count[i]=0; } while (!feof(rf)) { c=fgetc(rf); k=c; temp[k]++; i++; } fclose(rf); for (i=0;in;i++) { if (temp[i]!=0) { s[N]=i; count[N]=temp[i]; N++; } } return N; }//FileRead 三 生成Huffman树函数 选取字符中权值最小的两个节点建树,将权值相加放在根节点中,将原节点删除,新节点放入数组。递归进行上述操作直到数组中只有一个节点为止。 算法如下: 2、建立哈夫曼树 构造哈夫曼数时,首先将n个权值的叶子结点存放到数组huffTree[2*num]的前n个分量中,然后不断的将两棵子树合并为一棵子树,并将新子树的根结点顺序存放到数组huffTree[2*num]的前n个分量的后面。设n个叶子的权值保存在数组cnt[n]中,哈夫曼树的存储主要是利用数组存储,例如将已知字符窜s为abcdeacedaeadcedabadadaead统计出的字符频率分别为a:9,b:2,c:3,d:7,e:5则构造哈夫曼树的存储空间的初始状态 最后状态如图: 四 求Huffman编码函数: 从叶子节点找到根节点,若该节点是双亲节点的左孩子为1,反之为0,直到根节点为止求得该节点Huffman编码的逆序列; 1.、对哈夫曼树进行编码函数void Huffmancoding(element huffTree[],Code CodeNode[],char str[],int n) ; 主要思想:规定哈夫曼编码树的左分支代表0,右分支代表1,则从根结点对应的字符的编码,称为哈夫曼编码。例如上面所举例子的哈夫曼编码构造树及哈夫曼编码 对每个叶子结点进行编码: a.1初始化编码深度为0,将孩子结点的双亲结点付给一个变量,双亲结点不为空时,深度加1,继续向上查找
您可能关注的文档
- 讲酒水知识浅析.doc
- 化工企业“三违”详细清单解释.doc
- 过小孤山大孤山__汇总.ppt
- 过小孤山大孤山实用汇总.ppt
- 化工原理综合复习解释.doc
- 化新高速底基层施工技术方案解释.doc
- 过小孤山大孤山修汇总.ppt
- 化学操作票解释.doc
- 过小孤山大孤山优秀汇总.ppt
- 嘉庚学院财务报销注意事项介绍.ppt
- 2016-2017学年高中生物第二单元生态工程与生物安全第1章第2节我国的生态工程教案中图版选修3.doc
- 2022-2023学年小升初英语易错点专练06完形填空15篇(广州教科版专版含答案)2.docx
- 期中专项四年级英语下册(含答案)3.docx
- 期末卷(二)(含答案解析)-2022-2023学年高二历史期中期末复习备考必刷题(选择性必修一国家制度与社会治理).docx
- 第4课欧姆定律的应用第一讲欧姆定律实验探究(原卷版).docx
- Unit1限制性定语从句语法讲义人教版高一英语学生版213.docx
- 2023年宁波市初中毕业升学文化考试科学模拟卷(八).docx
- 5.3细胞呼吸的原理和应用课件高一上学期生物人教版必修12.pptx
- 高中政治更好发挥政府作用教学设计.docx
- 体悟民间故事中的幸福--五上《中国民间故事》导读课.docx
文档评论(0)