跳转至

> Back

实验题目描述

1.基本要求

利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道〉,每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。

2.参考

利用教科书《数据结构》(紫书)例6-2 中的数据调试程序。

3.实验测试用例

用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:“THIS PROGRAM IS MY FAVORITE ”。 字符集和频度

实验报告

1.题目分析及解题思路

  • 问题抽象: 由于字符集权值已经给出,故可以直接由字符集权值建立哈夫曼树,再由已经建成字符集权值生成每个字符的编码

  • 问题解决思路:

  • ①从文件中导入字符集权值,存入哈夫曼树的叶子结点中;

  • ②遍历每个叶子结点。在所有结点中寻找最小的两个结点,两个结点生成一个根节点,然后不断重复这个操作,直到最后生成一个完整的哈夫曼树;

  • ③设定哈夫曼树的左孩子是“0”,右孩子为“1”,从根节点开始遍历,遍历到叶子结点,从中可以得出每一个叶子结点的哈夫曼编码;

  • ④由用户输入的字符串得到编码,或是从用户输入的编码得到字符串,实现一个双向的编码、译码;

  • ⑤本人补充了基于mqtt协议与单片机的哈夫曼编码译码系统设计,实现了两台电脑通过mqtt这座“桥梁”实现双向编码译码

  • 确定输入输出:

  • Input:

    • ①用户输入的对应功能的选择编号(1打印字符集的权值以及字符集的编码;2. 将字符串翻译为编码;3. 将编码翻译为字符串)

    • ②用户输入模式(手动输入或由文件导入)

    • ③用户输入的待编码的字符串 or 用户输入的待翻译代码

  • Output:

    • ①打印字符集的权值以及字符集的编码

    • ②编码 or 译码

2.实验过程(编码过程)

代码

3.完整示例

本人关于本实验的博客https://blog.csdn.net/JackyJiang1/article/details/122532230?spm=1001.2014.3001.5501