资源简介

采用哈夫曼编码思想实现文件的压缩和恢复功能,并提供压缩前后的占用空间之比。 要求: (1)描述压缩基本符号的选择方法。 (2)运行时的压缩原文件的规模不小于5K。 (3)提供恢复文件与原文件的相同性对比功能。

资源截图

代码片段和文件信息

#include 
#include 
#include 
using namespace std;

const int leaf = 256; //最多可能出现的不同字符数
const long MAX = 99999999; //表示无穷大

struct HTnode{ //huffman树的结点结构体
long weight; //记录结点的权值
int parent; //记录结点的双亲结点位置
int lchild; //结点的左孩子
int rchild; //结点的右孩子
int *code; //记录该结点的huffman编码
int codelen; //记录该结点huffman编码的长度

//初始化结点,令其权值为无穷大,无双亲及左右孩子
HTnode(){
weight = MAX;
parent = -1;
lchild = -1;
rchild = -1;
codelen = 0;
}
};

class huffman{ //huffman树类
private:
int root; //记录根结点的位置
int leafnum; //记录不同字符的个数
HTnode HT[leaf*2-1]; //HTnode结构的数组,用来表示huffman树,树的最大结点个数不会超过leaf*2-1
char byte; //压缩文件时用来缓冲bit的变量
int bitsnum; //byte中bit的个数
int lacknum; //压缩到最后byte中的bit不满8个时填充的0的

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       9638  2009-06-29 16:00  huffman.cpp

----------- ---------  ---------- -----  ----

                 9638                    1


评论

共有 条评论