一、题目要求:
根据哈夫曼编码的原理,编写一个程序,在用户输入结点权值的基础上求赫夫曼编码,并能把给定的编码进行译码。
(1)初始化:从键盘输入一字符串(或读入一文件),统计出现的字符和每个字符出现的频率,将字符出现的频率作为结点的权值,建立哈夫曼树。对各个字符进行哈夫曼编码,最后打印输出字符及每个字符对应的哈夫曼编码。
(2)编码:利用已建好的哈夫曼树对“输入串”进行哈夫曼编码,最后打印输入串对应的哈夫曼编码(写入文件)。
(3)译码:利用已建好的哈夫曼树对给定的一串代码进行译码,并打印输出得到的字符串。(选作)
测试数据:对字符串{casbcatbsatbat}进行编码;对电文“1101000”译码。字符集D={ ?},出现频率为w={?}
二、题目分析
根据题意,我们可将代码分为以下几部分:
(1)根据输入字符串,求出字符集和对应频率(权值)
(2)构建哈夫曼树,需要用到寻找最小和次小权值的函数
(3)编码
(4)译码
(5)释放内存
三、代码实现
代码可能有些丑陋,大家也可以多多提意见
在这里我就不再