根据一段字符串中字符的个数 作为该字符的权值生成哈夫曼树。
然后根据生成的哈夫曼编码,对任意字符串实现编码,对任意二进制串实现译码。
程序运行结果:
1.程序主界面:
2.根据字符串 创建哈夫曼树及编码:
3.生成的编码表如下:
4.根据生成的哈夫曼编码对字符串编码:
5.生成的编码保存在文件中:
6.对二进制串译码:
结果:
代码:
哈夫曼树的生成和编码的常见,以及编码和译码函数
//_HuffmanTree_H
#ifndef _HuffmanTree_H
#define _HuffmanTree_H
typedef struct
{
unsigned int weight;
char ch;
unsigned int parent,lchild,rchild;
}HTNode,*HuffmanTree;
typedef char **HuffmanCode;
//这三个是哈夫曼树的生成
int min1(HuffmanTree t,int i); //选出权值数组中最小的一个 ,,
void select(HuffmanTree t,int i,int *s1,int *s2); //权值数组中最小的两个,,,并把临