1 / 16
文档名称:

哈弗曼编码译码(c 实现).doc

格式:doc   大小:145KB   页数:16页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

哈弗曼编码译码(c 实现).doc

上传人:977562398 2020/3/20 文件大小:145 KB

下载得到文件列表

哈弗曼编码译码(c 实现).doc

相关文档

文档介绍

文档介绍::..数据结构(C++实现)实训报告题目:哈弗曼编码与译码专业:信息管理班级:学生:吴昊翀学号:1251220117指导老师:黄建灯/目录一、实训要求 3二、课题分析和设计 4三、主要功能界面 8四、总结 10五、附录 10/一、实训要求*输入为:一段英文或中文的文章(原文)*对输入的文章构造哈夫曼树*生成对应的编码*输出为:原文所对应的编码(译文)*根据已经生成的编码表,输入任意的译文可以得到对应的原文二、,为了提高信道利用率,缩短信息传输时间降低传输成本,需要一编码译码器。,即在发送端通过编码系统对传入的数据进行编码。,将具有两项功能的编码译码器用于双工信道就可满足,双工信道的双向编译功能。,系统将自己完成编译输出。(1)文字表述开始进入功能选择界面,包含五种操作:。。。。。(2)操作1:给定一篇文章,统计字符出现的概率,并根据概率建立哈弗曼树,并利用哈弗曼树对字符进行哈弗曼编码。2:显示哈弗曼编码信息,包括字符,字符出现的概率,哈弗曼编码。3:对文章进行译码,显示译码信息,并保存。4:对文章进行译码,显示并保存(3)(1)定义classHtnote{public:charname;//字符名doubleweight;//权重intlchild;//左孩子intrchild;//右孩子intparent;//父亲Htnote(){weight=0;lchild=-1;parent=-1;rchild=-1;}};(2)定义字符和出现的次数className{public:intnum;//字符出现的次数charpname;//字符名doublelweight;//权值Name(){num=0;lweight=0;}};(3)定义字符种类总数和存储信息classGetName{public:charnamef[max2];intn;//字符的种类intsum;//字符的总数Nameletter[max1];//存储字符信息的类的数组GetName(){sum=0;n=0;}(4)定义编码类classCodeNode//编码类{public:charch;//存储字符charbits[max1];//存储编码};classFunction{public:GetNameL;intfn;//定义哈夫曼数组大小HtnoteHuffmanT[max3];//哈夫曼数组CodeNodeCode[max1];//字符编码数组Function(){fn=0;}三、,回想起前前后后还是有苦有甜。当拿到课题是感觉还行!结果前几天做程序的代码时一点都不会做,课本也看不懂课程进度可以说是原地踏步!只能怪自己吧!老师讲的有时能听懂有时就听不懂,到头来今天的局面,当时以为自己完成不了任务。过程中甜的是有老师和同学的帮忙,总算圆满完成任务。通过本次实训让我重新学****了算法和数据结构这门课程,也懂得了用代码来建立哈弗曼树,编码译码双向功能!上机实验,将理论的知识与实际结合起来。增强了自己的动手能力,觉的任何知识都不是轻而易举的学懂,必须花点心思去学,必须要付出努力。以后上课就不能像以前那样,要好好学****这样不辜负老师对我们的心意。最后衷心感谢帮助我完成程序设计的老师和同学表示感谢!五、附录全部代码:#ifndefHUFFMANFUNCTION_H#define HUFFMANFUNCTION_H#include<cstdlib>#include<iostream>#include<fstream>#include<>#definemax1150#definemax250#definemax3256usingnamespacestd;classHtnote{public:charname;//字符名doubleweight;//权重intlchild;//左孩子intrchild;//右孩子intparent;//父亲Htnote(