哈弗曼压缩原理

1、根据输入的字符串,整理得到其权值表 队列,权值表元素和哈弗曼树节点可以定义为一个类,方便建树。

 2、建立哈弗曼树,用递归遍历树,设左1右0,得到码表队列。

3、根据码表把字符串转换成由01组成的串。

 4、把01串按照二进制转换成十进制的方法,把每16个01串转换成一个整数。最后不足16个的补零至16个转换成整数。统统放进整数数组里保存,数组最后一位保存补零的个数。5、利用IO流,把整数数组写入新建的文件里。然后还需要以一定形式保存码表,以便关闭程序后再次重启时依然能读取。

 

6、读取文件里的整数数据,转换成二进制的01串储存在char数组里,如果每个整数转成的01串不足16个,要在串的前面补零,补足16位为止。倒数第二个整数转换成01串并且补零后,根据最后一个整数,char数组中后面的该整数位数的元素。
7、根据读出的码表和读取出来的01串,还原字符串。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值