如何用C语言编辑哈夫曼树进行文件压缩?

已编好的部分:读取一个文本文件,并统计构造哈夫曼树完毕
疑问:然后怎么进行压缩?难道读取的时候不是一个字节一个字节的读取么?可以一位位储存读取?如果是的话怎么实现?用什么函数?
PS:只求原理和函数,真心求会的人讲解下,不要复制一大段看的头晕,那些在网上找一下都能找到,谢谢!
小白真心求教,请自重......

第1个回答  2011-06-15
如何用C语言编辑哈夫曼树进行文件压缩?
个应该是正常的,最后两个454,说明454有左孩子右孩子,而253 420 421 226分别是他们的左右孩子,所以不是双亲节点有4个叶子节点,而是,双亲节点454有4个孙子节点(呵呵,这样的说法希望你能理解)

当然需要看源代码才能知道是不是这样表示的,光从字面意思理解双亲节点就是独一无二的parent,左右孩子是没有争议的,就是这个输出为什么输出双亲节点还不输出自己呢,所以忠实于源代码,你可以看看打印huffman的这段代码,这个双亲节点是什么东西,然后就真相大白了.
第2个回答  2011-06-15

这是我很早以前的一篇文章,里面有注释,可以对照着看下,
希望楼主明白,完全听别人讲解不是一种好的学习方法,可以自己先看看,不懂的地方再问.追问

将一个字母转换成字符串不是越压越大了么?
我想知道能不能对文本文件进行压缩生成一个新的较小文件?能的话怎么压?(只要解决这个问题剩下的我能自己搞定........)

追答

(1)这里不是将字母转换成字符串,而是将字符串转换成一个编码表,字符串重复次数越多,编码表长度越短,所以可以实现压缩.
(2)对文本文件进行压缩生成一个新的较小文件,你可以采用网上公开的zip压缩库文件,一般是C语言的库,可以直接使用,当然也可以采用7z格式压缩,那样压缩比会比较高.

追问

我目的不是压缩文件,是编压缩文件的程序.....
你那段程序看不出来如何将文件压缩生成更小的新的文件,怎么办到?
哈夫曼树基本原理还是懂得.

本回答被提问者采纳
第3个回答  2012-04-22
呵呵 我现在正在搞 多媒体的作业

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网