版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PAGE 第7页 共7页数据结构 实验报告20112012学年 第 * 学期 *级 * 专业班级: * 学号: * 姓名: * 实验三 树的应用实验题目:树的应用哈夫曼编/译码实验内容:利用哈夫曼编码进行通信可以大大提高信道的利用率,缩短信息传输的时间,降低传输成本。根据哈夫曼编码的原理,编写一个程序,在用户输入字符及权值的基础上求哈夫曼编码。要求:从键盘输入字符集(字母az,空格)共27个字符,以及出现的频率,将字符出现的频率作为结点的权值,建立哈夫曼树,并输出数组ht的初态和终态。对各个字符进行哈夫曼编码,打印输出字符及对应的哈夫曼编码。编码:从键盘输入字符串,利用已建好的哈夫曼编码,实现
2、该字符串的编码。(选作)译码:从键盘输入二进制串,利用已建好的哈夫曼编码,将二进制串还原为字符串。三、程序源代码:#include #include #include typedef structchar data;/结点值float weight;/权重int parent;/双亲结点int lchild;/左孩子结点int rchild;/右孩子节点HTNode;typedef structchar cd27;/各个字符的哈夫曼编码int start;/各个字符的哈夫曼编码的起始下标HCode;void CreateHT(HTNode ht,int n)/构建哈夫曼树int i,k,lno
3、de,rnode;char str27;float s27;cout请输入空格和26个字母:endl;gets(str);cout请分别输入这27个字符的权重:endl;for(i=0;isi;float min1,min2;for(i=0;in;i+)hti.data=stri;hti.weight=si;for(i=0;i2*n-1;i+)/所有结点的相关域置初值-1hti.parent=hti.lchild=hti.rchild=-1;cout哈夫曼树的初态:n序号 结点值 权重 双亲结点 左孩子结点 右孩子节点endl;for(i=0;in;i+)coutithti.datathti.
4、weightt;couthti.parentthti.lchildthti.rchildendl;for(i=n;i2*n-1;i+)/构造哈夫曼树min1=min2=32767;lnode=rnode=-1;for(k=0;k=i-1;k+)if(htk.parent=-1)if(htk.weightmin1)min2=min1;rnode=lnode;min1=htk.weight;lnode=k;else if(htk.weightmin2)min2=htk.weight;rnode=k;htlnode.parent=i;htrnode.parent=i;hti.weight=htlno
5、de.weight+htrnode.weight;hti.lchild=lnode;hti.rchild=rnode;cout哈夫曼树的终态:n序号 结点值 权重 双亲结点 左孩子结点 右孩子节点endl;for(i=0;i2*n-1;i+)coutit;if(in)couthti.datat;elsecout t;couthti.weightthti.parentt;couthti.lchildthti.rchildendl;void CreateHCode(HTNode ht,HCode hcd,int n)/对哈夫曼树进行编码int i,f,c;HCode hc;for(i=0;in;i
6、+)hc.start=n-1;c=i;f=hti.parent;while(f!=-1)if(htf.lchild=c)hc.cdhc.start-=0;elsehc.cdhc.start-=1;c=f;f=htf.parent;hc.start+;hcdi=hc;void DispHCode(HTNode ht,HCode hcd,int n)/输出各个字符的哈夫曼编码int i,k;cout输出哈夫曼编码:n字符t对应编码endl;for(i=0;in;i+)couthti.datat;for(k=hcdi.start;kn;k+)couthcdi.cdk;coutendl;void CreateStrHCode(HTNode ht,HCode hcd,int n)/对字符串进行编码char str50;int i,j,k;cout请输入要编码的字符串:endl;gets(str);int nLen=strlen(str);cout该字符串的编码为:endl;for(i=0;inLen;i+)for(j=0;jn;j+)if(stri=htj.data)for(k=hcdj.start;kn;k+)couthcdj.cdk;cout ;coutendl;void main()int n=27;HTN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公务员考试题目在哪找
- 国防参考资料知识竞赛题之二
- 国家公务员考试申论真题地市级真题试卷
- 2025新疆公务员申论真题及答案
- 公务员复习行测秘笈:常识判断之经济篇练习题
- 2025年二级建造师考试试卷附答案详解(黄金题型)
- 2025年人力资源管理师二级真题及答案课件
- 2025年公务员考试申论冲刺押题试卷(含历年真题)
- 上海注册城市规划师:城市规划的实施考试试题
- 2025年黑龙江公务员考试真题
- 法学生职业规划
- 2025年天津市公务员录用考试《行测》真题及答案
- 毽球知到智慧树章节测试课后答案2024年秋武汉职业技术学院
- 客车保养手册
- 《电子技术》-李中发主编-前六章答案
- 大学生职业生涯规划书模板
- 艾伦·麦席森·图灵课件
- XX化工有限责任公司维保方案
- 2022版新课标下如何实施素养导向的大单元教学解读PPT
- 诊所备案申请表格(卫健委备案)
- 装饰装修工程监理月报[详细]
评论
0/150
提交评论