哈弗曼编码存储问题
算法我能看懂,可是疑问的是如何处理这些字符的顺序,书上的算法参数如下:
(HuffmanTree *HT,HuffmanCode *HC,int *w,int n) /* w存放n个字符的权值(均>0),构造赫夫曼树HT,并求出n个字符的赫夫曼编码HC */
按照算法,先构建哈弗曼树HT,然后根据这棵树得到每个字符的编码,并将这些编码存储在数组HT中。
比如现在要对“hello,java”进行编码,那么要处理的字符就是8个,分别是"helo,jav",其中l和a的权重是2,其他的权重都是1。n就等于8.
所有字符的编码是出来了,一共2n-1个,可是该如何解码?何以知道是hello,java还是java,hello或者这8个字符的其他组合?
而且调用时的参数里也并没有表明这些字符的顺序。。。
迷惑,请高人指点下~~
[解决办法]
你得到的编码保存起来,解码的时候和保存的编码对照,一般是匹配,哈夫曼编码保证没有一个字符的编码是另一个的前缀,所以能直接匹配完就是。
[解决办法]
http://blog.csdn.net/ffee/archive/2007/12/09/1925609.aspx
这篇的注释不错,相信你能看懂、