翻新时间:2022-10-16
动态哈夫曼编码的改进
动态哈夫曼编码的改进 《计算机世界月刊》1994年7月号所登载的《动态哈夫曼编码的数据压缩方法》一文给出了一种实时性较强的数据压缩方法,该方法的最大特点是不需预先对原始数据进行一遍扫描以建立哈夫曼树,而改为以动态变化的哈夫曼树对数据编码。
该文所附的动态哈夫曼编码数据压缩与解压源程序中的UpDate函数是动态修改哈夫曼树的关键部分,该函数对动态哈夫曼树的一种可能情况无法正确修改,针对这一点,本文附上对该函数的一个修正定义,以使该压缩与解压程序更加完善。
以下就举例说明原UpDate函数无法正确修改的一种哈夫曼树。例如若要压缩“TThhis”字符串,则在压缩完“TTh”之后的动态哈夫曼树为图所示(设根结点序号为1000):
@@04A07700.GIF;图 压缩完“TTh”之后的动态哈夫曼树@@
此时若再将字符h进行压缩编码,则在输出h的编码“01”后需调整哈夫曼树,以997号叶结点为当前结点,则与当前结点具有同样重量的且序号最大的结点为998号结点,而该结点是997号结点的父结点,对二者按原文所提供的UpDate函数进行交换,则将导致998号结点变成叶结点,996号结点变成997号结点的左孩子,997号结点则既为自己的父结点又是自己的右孩子,这样在对后继字符i进行压缩编码时,首先就无法输出996号空结点的编码了,此时压缩程序陷入死循环。
显然这时可以简单地将998和997号结点的重量加1,然后以998号结点的父结点为当前结点进行调整,根据这种思想对原文提供的UpDate函数进行修正所得新的UpDate函数附后。
void UpDate(struct Node *Temp)
{
struct Node * Tempa, * Tempc, * Pointer;
struct LeafNode *p,*q,*b;
unsigned char Letter;
while(Temp!=Root)
{
if(Temp-
下载文档
网友最新关注
- 大象、金字塔和一分钱换一万块钱
- 春
- 一年四季,我爱你
- 观影片《ELKLE》有感
- 关于植物运动的报告
- 我读书我快乐
- 把微笑献给自己
- 新龟兔赛跑
- 我的梦
- 母爱如风母爱似海
- 参观恐龙博物馆
- 快乐的星期六
- 我、妈妈、狗狗
- 给哥哥的一封信
- 我的妈妈
- 图书捐助倡议书
- 中学党风廉政建设责任承诺书
- 考生诚信考试承诺书
- 环保倡议书
- 5.12护士节倡议书
- 产品质量承诺书
- 党员干部先进性个人党性分析材料
- 考生诚信考试承诺书
- 2016年扶贫攻坚工作调研报告
- 2011年基层党组织公开承诺书
- 假期读书活动倡议书
- 创建国家级生态县倡议承诺书
- 小学同学聚会倡议书
- 为同学捐款治病的倡议书
- 党性分析材料(个人分析1)
- 感悟语言 积累语言 运用语言
- 议装饰艺术对社会品味的引导
- 论如何加强教师教学艺术修养
- 浅谈马克思主义与社会主义核心价值体系构建
- 浅析夏加尔绘画语言的独立性
- 浅析供电企业的电力营销管理
- 高职院校市场营销教学中存在的问题与对策
- 探析中国画中的设计因素
- 关于健全有中国特色的生产要素参与分配制度
- 如何在现代市场营销中做到以客户为核心
- 认知语言学的新发展——认知社会语言学
- 摩登女郎由何而来
- 政策性保险产品市场营销之路
- 基于对比语言学的英语写作教学改革宏观策略
- 基于服装销售渠道中委托代理模式的激励机制研究
- 《为中华之崛起而读书》
- 《电脑住宅》教学设计》
- 《麦哨》
- 《呼风唤雨的世纪》
- 《和我们一样享受春天》
- 《鱼游到了纸上》教学设计
- 《牧场之国》
- 《小英雄雨来》2
- 《母鸡》1
- 《猫》
- 《小英雄雨来》1
- 《父亲的菜园》
- 《跨越海峡的生命桥》教案
- 《乌塔》教学设计
- 《白鹅》教学设计