C语言哈夫曼编码课程设计开题报告课件_第1页
C语言哈夫曼编码课程设计开题报告课件_第2页
C语言哈夫曼编码课程设计开题报告课件_第3页
C语言哈夫曼编码课程设计开题报告课件_第4页
C语言哈夫曼编码课程设计开题报告课件_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

赫夫曼编码132

刘海澍周弘杰徐铭瑶目录哈夫曼树的介绍选题的意义实验内容算法及可行性分析预期结果赫夫曼编码是哈夫曼树的一个应用路径上的分支数目称作路径长度树的路径长度是从树根到每一个结点的路径长度之和结点的带权路径长度为从该结点到树根之间的路径长度与节点上权的乘积树的带权路径长度为树中所有叶子结点的带权路径长度之和,通常记作WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln)N个权值构成一棵有N个叶子结点的二叉树,每个叶子结点带权为Wi相应的叶结点的路径长度为Li(i=1,2,...n)。最小的二叉树称作最优二叉树或赫夫曼树选题的意义“哈夫曼编码”是一种一致性编码法(又称“熵编码法”),用于数据的无损耗压缩。这一术语是指使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)目录实验内容【问题描述】

设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。【选做内容】(1)显示哈夫曼树;

(2)界面设计的优化。【基本要求】(1)初始化:键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树;

(2)编码:利用建好的哈夫曼树生成哈夫曼编码;

(3)输出编码;

(4)设字符集及频度如下表:字符:ABCDEF

频度:492321715

字符:GHIJK

频度:12334目录算法及可行性分析主程序部分voidmain(){初始化;构造哈夫曼树;求哈夫曼编码;哈夫曼编码输出;}哈夫曼树部分实现哈夫曼树的抽象数据类型哈夫曼编码部分

实现求哈夫曼编码算法的数据类型主函数intmain(){intn;printf("请输入要输入的字符数量n:");//读入字符的个数

while(scanf("%d",&n),n>=0&&n<=20){//初始化

printf("请输入n个字符和n个权值\n");CodeInput(n,ht);//输入数据函数,将读入n个字符和权重

CreateHT(ht,n);//构造哈弗曼树

CreateHCode(ht,hcd,n);//哈弗曼编码算法

CodeOutput(n,hcd);}//打印哈弗曼编码,将打印出编码,和每一个字符的编码

return0;}程序流程程序输入输出结果预期结果输入:键盘输入字符集大小n、n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论