资源描述:
《基于哈夫曼编码的通信系统的设计和实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、河北工业大学《数据结构》课程实验实验报告题目:基于哈夫曼编码的通信系统的设计与实现专业:班级:姓名:学号:完成日期:一、试验内容利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站设计一个基于哈夫曼编码的通信系统。二、试验目的(1)掌握二叉树的存储结构及其相关操作。(2)掌握构造哈夫曼树的基本思想,及
2、其编码/译码过程。结束对接收到的信息进行译码判断三、流程图输入编码字符及编码长度进行哈夫曼编码输入要传送的信息四、源程序代码#include#include#includeinthfmbm(intn,intm,charp[]){typedefstruct{floatwe;intpa,lc,rc;}htnode,*huff;huffHT;typedefchar**huffman;huffmanHC;FILE*fp,*fp1;inti,j,t,d,min[2],
3、*h;float*g;chara,*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[
4、j]];}}q[i][j]=' ';}fp=fopen("zifu.txt","w+");//字符编码写入文件for(i=0;i<100;i++){fputs(q[i],fp);}fclose(fp);g=(float*)malloc(n);for(i=0;i5、符出现的概率HT=(huff)malloc((2*n-1)*sizeof(htnode));//计算哈弗曼编码for(i=0;i6、[min[t]].pa=i;}HT[i].we=HT[min[0]].we+HT[min[1]].we;HT[i].pa=0;HT[i].lc=min[0];HT[i].rc=min[1];}HC=(huffman)malloc(n);temp=(char*)malloc(m+1);t=2*n-2;d=-1;//进行哈夫曼编码for(i=0,d=0;d!=n;i++){if(HT[t].lc!=-1){t=HT[t].lc;temp[i]='0';}elseif(HT[t].rc==-1){if(t>=0&&t7、){d++;HC[t]=(char*)malloc(i+1);for(j=0;j