下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、树的应用一 . 实验题目 :树的应用哈夫曼编码二 . 实验内容:利用哈夫曼编码进行通信可以大大提高信道的利用率,缩短信息传输的时间,降低传输成本。根据哈夫曼编码的原理,编写一个程序,在用户输入结点权值的基础上求哈夫曼编码。要求:从键盘输入若干字符及每个字符出现的频率,将字符出现的频率作为结点的权值, 建立哈夫曼树, 然后对各个字符进行哈夫曼编码, 最后打印输出字符及对应的哈夫曼编码。三、程序源代码:#include #include #include #include typedef structchar data;int weight;int parent,lchild,rchild;HTN
2、ode,*HuffmanTree;typedef char * * HuffmanCode;void Select(HuffmanTree &HT,int n,int m)HuffmanTree p=HT;int tmp;for(int j=n+1;j=m;j+)int tag1,tag2,s1,s2;tag1=tag2=32767;for(int x=1;x=j-1;x+) if(px.parent=0&px.weighttag1) tag1=px.weight;s1=x;for(int y=1;y=j-1;y+) if(py.parent=0&y!=s1&py.weights2) aren
3、t=j;ps2.parent=j;pj.lchild=s1;pj.rchild=s2;pj.weight=ps1.weight+ps2.weight;void HuffmanCoding(HuffmanTree &HT,int n,char *w1,int*w2)int m=2*n-1;if(n=1) return;HT=(HuffmanTree)malloc(m+1)*sizeof(HTNode);HuffmanTree p=HT;for(int i=1;i=n;i+) pi.data=w1i-1;pi.weight=w2i;pi.parent=pi.lchild=pi.rchild=0;f
4、or(;i=m;i+) pi.weight=pi.parent=pi.lchild=pi.rchild=0; Select(HT,n,m);ofstreameighttHTi.parenttHTi.lchildtHTi.rchildtendl;();cout 初始化结果已保存在hfmTree 文件中 n;voidarent;f!=0;c=f,f=HTf.parent)outfile;ToBeTree() if(HTf.lchild=c) cd-start=0;else cd-start=1;HCk=(char *)malloc(n-start)*sizeof(char);strcpy(HCk,
5、&cdstart);)cout输出哈夫曼编码:endl;for(int h=1;h=n;h+)ata:;coutHCh;cout ;if (h%8=0) coutendl;)coutendl输出正文编码:endl;ToBeTree();ata) coutHCk;cout ;count+;outfileHCk;break;)if (count%9=0) coutendl;coutendl;void Decoding(HuffmanTree &HT,int n) child!=0)child;else f=HTf.rchild;j+;i=j;coutHTf.data;outfileHTf.data
6、;();coutn 译码结果已保存在文件 TextFile 中.;coutendl;void Print() n;cout 依次输入各个字符的权值:endl;for (int i=1;iArrayi;int tag;char x=menu();while(1) switch (x)case I:HuffmanCoding(HT,n,cArray,Array);break;case E:Encoding(HT,n);break;case D:Decoding(HT,n);break;case P:Print();break;case Q:tag=0;cout 结束 endl;break;defa
7、ult:cout 你输入错误!endl;if(tag=0) break;couty( 继续 ) or n( 退出 )ch;if (ch=y) coutc;x=c;else exit(1);测试数据:用下表给出的字符集和频度的实际统计数据建立哈夫曼树, 并实现以下报文的译码和编码 : THIS PROGRAM IS MY FAVORIT.E字符空格 A B C D E F G H I J K L M频度 186 64 13 22 32 103 21 15 47 57 1 5 32 20字符 N O P Q R S T U V W X Y Z频度 57 63 15 1 48 51 80 23 8 18 1 16 14 .测试结果:如图一所示5 .实验体会通过本次实验,尤其在自己对程序的调试过程中,感觉对树的存储结构, 终结状态,还有编码,译码的过程都有了比较清晰的认识。在做本次实验时,其 他的都没什么问题,以前很少进行文件操作,刚开始有点手生,但是在实验作完 后,文件操作已经用的比较熟练了。 最近几次实验,感到自己对本题实验
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年制糖行业洞察报告及未来五至十年预测分析报告
- 企业标准化办公流程建立与优化指南
- 汽车行业工程车辆操作与维护手册
- 办公室文化建设促进员工归属感方案
- 团队目标设定与分解操作手册
- 新生儿CPAP护理沟通技巧
- 健身教练精通健身教育指导书
- 老年人饮食与营养护理
- 癫痫全面护理与长期管理指南
- 5-O-TBDMS-3-O-TBDMS-5-Hydroxymethyl-dC-生命科学试剂-MCE
- 优质课一等奖初中家庭教育《青少年成才优秀家庭教育案例:家庭春雨 润物无声》
- GB/T 30257-2013节能量测量和验证技术要求通风机系统
- GB/T 22708-2008绝缘子串元件的热机和机械性能试验
- GB/T 17492-2019工业用金属丝编织网技术要求和检验
- GB 13614-2012短波无线电收信台(站)及测向台(站)电磁环境要求
- 城市绿地设计规范课件
- 2023年宁波城市职业技术学院单招职业适应性测试笔试题库及答案解析
- 风景园林工程课件第四章-园路
- 工程质量问责追责管理办法
- 放大倍数与增益dB换算表
- 合成生物学建物致知大有可为
评论
0/150
提交评论