- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计与问题求解
——哈夫曼树编程实现
哈夫曼树编程分析
以下面的问题为例进行分析
设一段文本由字符 X, S, D, E, A构成 ,它们的使用权重为2 :9 :5 :7 :8 ,请以这
些字符构造哈夫曼树,并求出它们的哈夫曼编码
注意:哈夫曼树及哈夫曼编码不是唯一的
X 000 X 100
D 001 D 101
E 01 E 11
E A S A 10 A S E A 00
S 11 S 01
X D X D
WPL=69 WPL=69
哈夫曼树结点定义
结点要存储字符、权重
struct HNode
{
char data; //字符数据
int weight; //权重
struct HNode *lchild; //左孩子指针
struct HNode *rchild; //右孩子指针
};
初始 n 棵单根树构造
//假定结点数不超30 (只用前5 棵树)
HNode *h[30], *root;
//让h[i]指向第i棵单根树
for (int i = 0; i30; i++) h[i] = new HNode;
//为每个单根树赋权值、字符
char ch[] = { X,S,D,E,A };
int weight[] = { 2,9,5,7,8 };
for (int i = 0; i5; i++) {
h[i]-data = ch[i];
h[i]-weight = weight[i];
h[i]-lchild = NULL;
h[i]-rchild = NULL;
}
哈夫曼树合并生成过程
0 1 2 3 4 5 排序 0 1 2 3 4 5
第
一 X:2 S:9 D:5 E:7 A:8 S:9 A:8 E:7 D:5 X:2
周 0 1 2 3 4 5
生成子树 7 放回数组 放弃
期
D X S:9 A:8 E:7 7
X D
第 0 1 2 3 4 5
二 排序 生成子树 放回 放弃 放弃
…… ……
周
您可能关注的文档
- 4.5 关系模式的规范化.pdf
- 4.3.选第二大数据结构与算法.pdf
- 4.3 线性链表数据结构与算法.pdf
- 4.5.选择问题的算法分析.pdf
- 4.8.快速傅立叶变换FFT算法.pdf
- 4.9.平面点集的凸包.pdf
- 5.1 数据库的安全性.pdf
- 4.7.卷积计算数据结构与算法.pdf
- 5.1 栈数据结构与算法.pdf
- 5.1.本周教学内容简介数据结构与算法.pdf
- 2024-2025学年安徽省亳州市涡阳县高二下学期2月开学考试政治试题(解析版).docx
- 2024-2025学年江西省赣州市上犹县高二下学期开学考试政治试题(解析版).docx
- 2024-2025学年山东省济宁市高二下学期开学考试政治试题(解析版).docx
- 2024-2025学年山西省卓越联盟高三下学期2月开学质量检测政治试题(解析版).docx
- 2024-2025学年新疆乌鲁木齐市高二下学期2月开学考试政治试题(解析版).docx
- 2024-2025学年新疆维吾尔自治区乌鲁木齐地区高三2月大联考文科综合政治试题(解析版).docx
- 2024-2025学年安徽省蚌埠市固镇县高一上学期1月期末考试政治试题 (解析版).docx
- 2024-2025学年江苏省扬州市高三上学期期末检测政治试卷(解析版).docx
- 2024-2025学年江西省吉安市高三上学期期末教学质量检测政治试题(解析版).docx
- 2024-2025学年山东省济宁市高二上学期1月期末考试政治试题(解析版).docx
文档评论(0)