霍夫曼编码的接口与实现
霍夫曼编码的接口
1) huffman_compress
int huffman_compress(const unsigned char *original, unsigned char **compressed, int size);返回值:如果压缩数据成功,返回压缩后数据的字节数,否则,返回-1。
描述:用霍夫曼编码的方法压缩缓冲区original中的数据,包含size字节的空间。压缩后的数据存入缓冲区compressed中。由于函数调用者并不知道compressed需要多大的存储空间,因此要通过huffman_compress函数调用malloc来动态地分配存储空间。当这块存储空间不再使用时,由调用者调用函数free来释放空间。
复杂度:O(n),其中n是原始数据中符号的个数。
2) huffman_uncompress
int huffman_uncompress(const unsigned char *compressed, unsigned char *original);返回值:如果解压缩数据成功,返回恢复后数据的字节数,否则,返回-1。
描述:用霍夫曼编码的方法解压缩缓冲区compressed中的数据。假定缓冲区包含的数据是由huffman_compress压缩产生的,恢复后的数据存入缓冲区original中。由干函数调用者并不知道original需要多大的存储空间,因此要通过huffman_uncompress函数调用malloc来动态地分配存储空间。当这块存储空间不再使用时,由调用者调用函数free来释放空间。
复杂度:O(n),其中n是原始数据中符号的个数。