电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

哈弗曼编码译码(c++实现)

  • 资源ID:107693727       资源大小:166.40KB        全文页数:21页
  • 资源格式: DOC        下载积分:20金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要20金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

哈弗曼编码译码(c++实现)

数据结构(C+实现) 实训报告题 目:哈弗曼编码与译码专 业: 信息管理 班 级: 12512201 学 生: 吴昊翀 学 号: 1251220117 指导老师: 黄建灯 目录一、实训要求4二、课题分析和设计41. 基本需求分析42. 对应的结构体或类5三、主要功能界面71.主界面72. 读取文章并对字符编码83. 哈弗曼编码信息94.文章编码10四、 总结12五、附录13一、实训要求n 输入为:一段英文或中文的文章(原文)n 对输入的文章构造哈夫曼树n 生成对应的编码n 输出为:原文所对应的编码(译文)n 根据已经生成的编码表,输入任意的译文可以得到对应的原文二、课题分析和设计1. 基本需求分析 1.在通信过程中,为了提高信道利用率,缩短信息传输时间降低传输成本,需要一编码译码器。 2.此哈弗曼编码译码器应具有编码译码的双向功能,即在发送端通过编码系统对传入的数据进行编码。 3.在接收端将数据译码,将具有两项功能的编码译码器用于双工信道就可满足,双工信道的双向编译功能。 4.输入某段报文是,系统将自己完成编译输出。1. 程序设计流程 (1)文字表述开始进入功能选择界面,包含五种操作:1. 读取文章并对字符编码。 2.哈夫曼编码信息。 3.文章编码。 4.文章译码。 5.退出程序。 (2) 操作 1:给定一篇文章,统计字符出现的概率,并根据概率建立哈弗曼树,并利用哈弗曼树对字符进行哈弗曼编码。 2:显示哈弗曼编码信息,包括字符,字符出现的概率,哈弗曼编码。 3:对文章进行译码,显示译码信息,并保存。 4:对文章进行译码,显示并保存 (3)流程图 程序开始程序主界面哈弗曼编码信息读取文章并对文章编码退出程序文章译码文章编码保存译码显示译码返回主界面返回主界面保存编码显示编码2. 对应的结构体或类(1)定义class Htnote public: char name; /字符名 double weight; /权重 int lchild; /左孩子 int rchild; /右孩子 int parent; /父亲 Htnote() weight = 0; lchild = -1; parent = -1; rchild = -1; ; (2)定义字符和出现的次数class Name public: int num; /字符出现的次数 char pname; /字符名 double lweight; /权值 Name() num = 0; lweight = 0; ;(3)定义字符种类总数和存储信息class GetName public: char namefmax2; int n; /字符的种类 int sum; /字符的总数 Name lettermax1; /存储字符信息的类的数组 GetName() sum = 0; n = 0; (4) 定义编码类class CodeNode/编码类public: char ch; /存储字符 char bitsmax1; /存储编码;class Function public: GetName L; int fn; /定义哈夫曼数组大小 Htnote HuffmanTmax3; /哈夫曼数组 CodeNode Codemax1; /字符编码数组 Function() fn = 0; 三、主要功能界面1.主界面2. 读取文章并对字符编码3. 哈弗曼编码信息4.文章编码5.文章译码4、 总结 为期两个星期的课程设计终于完美落下帷幕,回想起前前后后还是有苦有甜。当拿到课题是感觉还行!结果前几天做程序的代码时一点都不会做,课本也看不懂课程进度可以说是原地踏步!只能怪自己吧!老师讲的有时能听懂有时就听不懂,到头来今天的局面,当时以为自己完成不了任务。过程中甜的是有老师和同学的帮忙,总算圆满完成任务。通过本次实训让我重新学习了算法和数据结构这门课程,也懂得了用代码来建立哈弗曼树,编码译码双向功能! 上机实验,将理论的知识与实际结合起来。增强了自己的动手能力,觉的任何知识都不是轻而易举的学懂,必须花点心思去学,必须要付出努力。以后上课就不能像以前那样,要好好学习这样不辜负老师对我们的心意。最后衷心感谢帮助我完成程序设计的老师和同学表示感谢!五、附录 全部代码:#ifndef HUFFMANFUNCTION_H#defineHUFFMANFUNCTION_H#include <cstdlib>#include<iostream>#include<fstream>#include<math.h>#define max1 150#define max2 50#define max3 256using namespace std;class Htnote public: char name; /字符名 double weight; /权重 int lchild; /左孩子 int rchild; /右孩子 int parent; /父亲 Htnote() weight = 0; lchild = -1; parent = -1; rchild = -1; ;class Name public: int num; /字符出现的次数 char pname; /字符名 double lweight; /权值 Name() num = 0; lweight = 0; ;class GetName public: char namefmax2; int n; /字符的种类 int sum; /字符的总数 Name lettermax1; /存储字符信息的类的数组 GetName() sum = 0; n = 0; void GetWeight()/得到字符的权值 for (int i = 0; i < n; i+) letteri.lweight = (double) letteri.num / sum; /出现的次数除总数得到权值 int ReadLetter() ifstream input; cout << "请输入文件名: " << endl; cin >> namef; input.open(namef); /打开文件 if (input.fail() cout << "该文件不存在!" << endl; return 0; char ch; ch = input.get(); letter0.pname = ch; letter0.num+; sum+; while (!input.eof() /读取文件中的所有字符 int tag = 0; ch = input.get(); for (int i = 0; i < n + 1; i+) if (letteri.pname = ch) letteri.num+; sum+; tag = 1; if (tag = 0) n+; lettern.pname = ch; lettern.num+; sum+; sum-; input.close(); GetWeight(); /得到字符权值 ;class CodeNode/编码类public: char ch; /存储字符 char bitsmax1; /存储编码;class Function public: GetName L; int fn; /定义哈夫曼数组大小 Htnote HuffmanTmax3; /哈夫曼数组 CodeNode Codemax1; /字符编码数组 Function() fn = 0; void CharHuffmanTCoding()/编码功能实现 int i, f, c; char cd1000; /暂时存储编码的数组 int start; /编码读取起始位置 cdL.n = '0' for (i = 0; i < L.n; i+) Codei.ch = HuffmanTi.name; /字符信息

注意事项

本文(哈弗曼编码译码(c++实现))为本站会员(ji****en)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.