hufuman 编码实现(赫夫曼编码)

本文介绍了如何使用C语言实现赫夫曼编码,通过构建赫夫曼树进行数据压缩。首先简述了赫夫曼编码的理论背景,然后详细解释了构造赫夫曼树的步骤,包括建立优先队列、按权值排序、合并最小树等过程。最后提到了加密和解密的操作方向,分别是自底向上和自顶向下。
摘要由CSDN通过智能技术生成

先吐槽(可以跳过,直接正题哦)
      今天闲来没事,玩了玩hufuman的编码方式。在当今tianchao的“监护”中成长。TC就像”父母“一样,做什事得商量,什么能做,什么不能做,对我们了如指掌(哈哈:现在才知道父母)当初的良苦用心)毫无自由。假如我们和小妹妹谈恋爱了,和妹妹的通信为了不让TC知道,我们该怎么加密呢?我想到了hufuman编码方式,for our free ,我们今天就c语言方式实现吧,let‘s go!!!
ps. hufuman编码主要用途是压缩哦,这个压缩意义很广的。

 

                                                                     hufuman的编码实现

理论:
        那么,如何构造赫夫曼树呢?赫夫曼最早给出了一个带有一般规律的算法
 俗称赫夫曼算法。先叙述如下:
  (1)根据给定的n个权值{w1,w2,w3,...,wn}构成n棵 二叉树
 集合F={T1,T2,...,Tn},其中每棵树Ti只有一个带权的Wi的根节点,
 其左右子树均空。
  (2) 在F中选取两棵树结点的权值最小的树作为左右子树构造yike新的
  二叉树,且置新的二叉树的根节点的权值为其左右树上的根节点
  的权值之和。
  (3) 在F中删除这两棵树,同时将新得到的二叉树加入F中
  (4)重复(2)(3),直到F只含一棵树为止。这棵树就是赫夫曼树。(引用《数据结构c语言版》)
  
  
实现:  1.先构造一个优先队列,队列中放入256棵树也就是F集合(其实是256个asII码值)
 以每棵树的权值升序排列
  2.根据理论中的2方法,在优先队列中取出元素构造hufuman树。
  3.加密  (自底而上)
  4.解密  (自顶而上)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值