霍夫曼(Huffman)编码压缩问题

来源:百度知道 编辑:UC知道 时间:2024/05/02 16:34:14
现在我想应用霍夫曼编码对文件进行压缩。目的是实现对所有类型的文件进行压缩,以二进制形式读取文件。虽然知道霍夫曼编码的基本原理,但却无从下手。我想对每8位或者每4位进行压缩。请问应该如和建立霍夫曼树呢!请大家指点一下思路。或者大家有其他好的想法提供一下。多谢!!
谁能帮我啊???

霍夫曼算法的实现

(通过对霍夫曼算法的实现,进一步了解霍夫曼算法进行数据压缩的原理及过程)
(用c++语言完成霍夫曼算法的实现)
1. 算法的描述
1初始化,根据符号概率的大小按由大到小顺序对符号进行排序。
2把概率最小的两个符号组成一个节点,
3重复步骤2,得到节点P2,P3,P4,形成一棵树,其中p4称为根节点。
4从根节点开始到相应于每个符号的树叶。
5从根节点P4开始顺着树枝到每个叶子分别写出每个符号的代码
2. 算法中主要功能函数的设计思想
compress_math函数进行数据的压缩操作
Huffman_c函数用Huffman编码压缩指定的文件,并将结果存为新的文件
Huffman_d函数进行Huffman解码
decompress_math函数进行数据的解压缩操作
3. 算法的具体实现过程(代码)
**********************************************************************************************************/
int Huffman_c(char * infilename, char * outfilename) //用Huffman编码压缩指定的文件
{
if ((ifile = fopen (infilename, "rb")) != NULL)
{
fseek (ifile, 0L, 2);
file_size = (unsigned long) ftell (ifile);

fseek (ifile, 0L, 0);
get_frequency_count ();
build_initial_heap ();
build_code_tree ();
if (!generate_code_table ()) {
printf ("ERRO