- 完整扫描文本,遍历所有字符以统计字符权重
- 根据字符权重建立静态哈夫曼树
- 保存权重信息到输出文件(解压重建哈夫曼树需要)
- 通过哈夫曼树生成各字符的哈夫曼编码
- 根据哈夫曼编码对原文件字符转换并以 bit 为单位输出
- 扫描文本直至遇到标志位,以读取权重信息
- 根据字符权重重新建立静态哈夫曼树
- 读取哈夫曼编码并通过哈夫曼树还原字符
- 输出还原字符到解压文件
- 使用精简后的结构体的形式,通过「二进制写」保存权重信息,以避免歧义、特殊字符处理的问题
- 使用权值为 0 的上述结构体为权值信息结束标志位
- 利用哈夫曼树特性,通过重建的哈夫曼树根节点权值的到总字符数,解决最后字节可能存在的冗余问题
- 堆与哈夫曼树使用模版,泛型编程
- 注释丰富
- 两次扫描文本,影响性能
- 需要保存权重信息到文本
The project's URL https://github.com/SUSTYuxiao/Static-Huffman
2018.03.19 By 张鹏霄 [email protected] | Others in Blog https://sustyuxiao.github.io