河北工业大学《数据结构》课程实验实 验 报 告题目:基于哈夫曼编码的通信系统的设计与实现专业:班级:姓名:学号:完成日期:一、试验内容利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传来的数据进行译码(复原) 。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编 / 译码系统。试为这样的信息收发站设计一个基于哈夫曼编码的通信系统。二、试验目的(1)掌握二叉树的存储结构及其相关操作。(2)掌握构造哈夫曼树的基本思想,及其编码/ 译码过程。三、流程图输入编码字符及编码长度进行哈夫曼编码输入要传送的信息判断对接收到的信息进行译码结束四、源程序代码#include #include #include int hfmbm(int n,int m,char p[]) { typedef struct{ float we; int pa,lc,rc; }htnode,*huff; huff HT; t ypedef char **huffman; huffman HC; FILE *fp,*fp1; i nt i,j,t,d,min[2],*h; f loat *g; char a,*q[100],*temp; h=(int *)malloc(m); for(i=0;i<100;i++){ q[i]=(char *)malloc(m+1); // 对信息进行字符编码for(j=0;jn){h[j]=1;h[j+1]+=1;q[i][j]=p[h[j]];} } q[i][j]='\0'; } fp=fopen("zifu.txt","w+");//字符编码写入文件f or(i=0;i<100;i++){fputs(q[i],fp);} f close(fp); g=(float *)malloc(n); f or(i=0;i