一、结点的构造
struct TreeNode {
char name;
double weight;
TreeNode* left;
TreeNode* right;
TreeNode(char chara, double cweight) :name(chara), weight(cweight), left(NULL), right(NULL) {}
TreeNode() :name('0'), weight(0.0), left(NULL), right(NULL) {}
};
分别是字符名称,权重,左右孩子结点,以及两个构造函数
二、函数解释
1.pTree CreatHuffman(vector NodeSet);
通过此函数你可以生成一个哈夫曼树,返回树的头结点
2.void traceback(pTree root, string code, unordered_map<char, string>& CodeSet);
通过此函数回溯遍历哈夫曼树,得到字符相应的哈夫曼编码
3.pTree KeyboardIN(string s, unordered_map<char, int>& alph);
此函数将1号函数集成在其中,生成字母表权重表,和对应的哈夫曼树
4.unordered_map<char, string> GetHash(pTree root);
集成了traceback函数得到哈夫曼编码表
5.QString getRate(unordered_map<char, string> codeset, unordered_map<char, int> alph, int Sumweight);
得到压缩比率,返回QString给对话框传递提示信息
6.QString Compression(string s,unordered_map<char, string> codeset,QString fileName);
压缩函数,返回提示信息
7.QString Excute(string s,QString save_path);
整体执行函数,返回提示信息
8.QString s2q(const string& s);
将string转换为QString
9.string q2s(const QString& s);
将QString转换为string
10.string inttobinarystring(int value);
将int值转换为二进制字符串,用在解压缩
11.int binarystringtoint(string binarystring);
将二进制字符串转换为int值,用在压缩
12.QString decode(QString path,QString save_path);
解压缩函数