编码:
1.统计需要编码的文件中每个字符出现的次数(计算频率),并排序
2.选取出现次数最少的两个字符,把两者次数之和放入序列中;
3.重复操作 2 直到完成;
4.左子树权为0 右子树权为1;
举例:
a 的编码为:00
b 的编码为:01
c 的编码为:100
d 的编码为:1010
e 的编码为:1011
f 的编码为:11
压缩:
过程和编码差不多,不同的是:编码是把编码输入到另一个文件中,而压缩是输入到同一个文件中,当然都要把每个字符对应的二进制码输入到文件中;
问题:
压缩汉字的时候 要使用unsigned char!!!这时ch读不到文件的结束标志,所以我们可以用函数feof来代替文件的结束标志EOF,最重要的是文件的打开方式一定要是二进制的形式打开否则读不到汉字字符,