河北工业大学《数据结构》课程实验实验报告题目:基于哈夫曼编码的通信系统的设计与实现专业:计算机 科学与技术 班级:计 1301 班姓名:张路浩刘禄源刘磊波李浩川邹博睿王超完成日期:2024—1—13一、试验内容1)初始化处理:建立通信系统(1)建立有 100 句中文的信息集合,每个句子称为一条信息。(2)输入编码参数:① 从终端输入编码字符集大小 n,字符编码长度 m(设 n 为 4,m 为 8);② 从终端输入编码字符(设为 A,B,C,D);(3)生成每条信息的字符编码,构造字符编码集合;(4)计算每个字符在字符编码集合中出现的概率;(5)根据字符概率构造哈夫曼树,求出每个字符的二进制编码。2)发送端信息编码(1)用户从信息集合中选择一条信息,找到该信息对应的字符编码;(2)根据该信息的字符编码,哈夫曼树求出的每个字符的二进制编码,构造出该信息的二进制编码,记录该二进制编码。(由于是软件模拟,没有发送设备,发送端的编码工作完成)。3)接受端信息译码(1)根据得到的信息的二进制编码,利用哈夫曼树求出的每个字符的二进制编码,还原出信息的字符编码;(2)根据信息的字符编码,找到对应的信息。5、实现提示(1)本试验涉及到通讯学科的编码理论和信息学科的数据压缩技术。(2)根据参数生成的通信系统的所有信息的有效存储问题.(3)信息字符编码可参考随机数的方式生成,且要求保持唯一性二、试验目的(1)掌握二叉树的存储结构及其相关操作。(2)掌握构造哈夫曼树的基本思想,及其编码/译码过程.三、流程图四、源程序代码#include#include〈cstdlib〉#include〈ctime〉#include〈string>using namespace std;constint n=4;//叶子节点个数 constint MAXVALUE = 9999;intm,p; //编码参数string l;int size;//构造哈夫曼树结点 typedefstruct{int weight;//权值 int parent;//父节点 intlchild;//左子树 intrchild;//右子树char word;//编码字符}HNodeType;用字符集对信息进行字符编码 void CreatCode(HCodeType& HT,int n)根据各字符构的频度构造哈夫曼树CreatHFMTree(HT,n)哈夫曼编码CreatHFMCode(HT,HFMCode,n);输出文字信息和对应的哈夫曼编码开始结束定义字符集大小 n输入 n输入编码长度 p输入字符集内容HT.HFMTree[i].word定义汉字信息string message[10]设置随机数种子srand(time(NULL));通过随机数函数对汉字信息用字符集进行编码 psw[i]统计汉字信息字符编码中各字符出现...