学号20182325袁源 《数据结构与面向对象程序设计》哈夫曼编码实践

学号20182325袁源 《数据结构与面向对象程序设计》哈夫曼编码实践

(1)准备一个包含26个英文字母的英文文件(可以不包含标点符号等),统计各个字符的概率

  • 事先准备英文文件
  • 用读写流将文件读出
  • 建立数组储存字母出现个数。出现就自增。用个数代替概率。

(2)构造哈夫曼树

  • 建立 List nodes = new ArrayList();

  • 用26个字母和字符个数作为数据储存。

  • 根据字符个数排序,将最小的两个从数组中取出,并合成一个新节点加入数组。

  • 将数组最后一个节点作为根节点。

(3)对英文文件进行编码,输出一个编码后的文件

  • 遍历哈弗曼树,进入左子树编码加“0”,进入右子树编码加“1”

  • 叶节点成功编码。

  • 通过流逐个字母判定,将编码后的“01”们建立一个新文件。

(4)对编码文件进行解码,输出一个解码后的文件

  • 用队列的方式,每添加一个元素就判定一次,是否有对应序列。如果有输出字符。
  • 建立一个新文件。
posted @ 2019-11-22 21:03  20182325袁源  阅读(223)  评论(0编辑  收藏  举报