资源描述:
《哈夫曼编码的实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划哈夫曼编码的实验报告 哈夫曼编码器实验报告 学院:计算机学院 班级:计科 姓名:王宇宏 学号:0801班 一.实验目的 练习树和哈夫曼树的有关操作,和各个算法程序,理解哈夫曼树的编码和译码 二.实验环境 Microsoftvisualc++ 三、问题描述 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。对于双工信道,每端都需要一个完整的编码/
2、译码系统。试为这样的信息收发站写一个哈夫曼编码的编码/译码器。 四、需求分析 初始化;从终端输入字符集的大小n,以及n个字符和n个权值建立哈夫曼树。目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 输出哈夫曼树,及各字符对应的编码。 编码:利用建好的哈夫曼树,对输入的待发送电文进行编码。同时输入原文及编码串。 译码:利用建好的哈夫曼树,对输入的已接收电文进行译码。同时输入编码串及原文。 五
3、、概要设计 #include #include #include #include #include //typedefintTElemType; constintUINT_MAX=1000; charstr[50]; typedefstruct { intweight,K; intparent,lchild,rchild; }HTNode,*HuffmanTree; typedefchar**HuffmanCode;//-----------全局变量----------------------- HuffmanTreeHT;目的-通过该培训员工可对保安行业
4、有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 HuffmanCodeHC; intw[50],i,j,n; charz[50];intflag=0; intnumb=0 //-----------------求哈夫曼编码----------------------- structcou{ chardata;intcount; }cou[50];intmin(HuffmanTreet,inti) {//函数voi
5、dselect()调用 intj,flag; intk=UINT_MAX;//取k为不小于可能的值,即k为最大的权值1000for(j=1;j哈夫曼编码的实验报告);s1,int&s2) {//s1为最小的两个值中序号小的那个 intj;s1=min(t,i); s2=min(t,i); if(s1>s2) { j=s1; s1=s2; s2=j; }目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能
6、及个人素质的培训计划 } //--------------算法 voidHuffmanCoding(HuffmanTree&HT,HuffmanCode&HC,int*w,intn) {//w存放n个字符的权值(均>0),构造哈夫曼树HT,并求出n个字符的哈夫曼编码HC intm,i,s1,s2,start; //unsignedc,f; intc,f; HuffmanTreep; char*cd; if(nweight=*w; p->parent=0; p->lchild=0; p->rchild=0; } for(;iparent=0; for(i=n
7、+1;ik) { if(str[i]==str[k]){ a++;目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 flag=0; }k++; if(flag==0) break; } if(flag){ for(j=i+1;