数据结构课程实报告 实验8.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程实报告 实验8

HUNAN UNIVERSITY 课程实习报告 题 目: 哈夫曼编 学生姓名 康小雪 学生学号 20090810310 专业班级 计科三班 指导老师 李晓鸿 完 成 日 期 2010-11-08 需求分析 1.本程序可以通过从键盘键入n个节点的信息来构建哈弗曼编码树; 2.用户可以从键盘输入节点数n及n个节点信息包括字母(a-z)和其权值(大于0的整数); 3.计算机通过根据权值大小来构建哈弗曼树,最后将每个字符编码; 4.程序输出每个节点的信息(字母及其权值)及其编码。 输入输出用例: 请输入字符个数: 5 ch= weght= a 1 ch= weght= b 2 ch= weght= c 3 ch= weght= d 4 ch= weght= g 5 a 的编码是:010 b 的编码是:011 c 的编码是:00 d 的编码是:10 g 的编码是:11 概要设计 考虑用线性表来保存每个节点的信息,于是构建haffuman编码树的过程如下: 在上述haffuman树形成的过程中,我们可以可以看到,构建的haffuman树实际上是一个优先队列,每一次最先取出的总是在数列中最小的值,取出两个值相加,再将和放进数列中,在我们所学的数据结构中,只有最小值堆能够最方便的实现这种操作,于是,我们可以建立最小值堆来实现构建haffuman树。 抽象数据类型 哈弗曼树 ADT Haffuman { 数据对象 Node:在Node中有Char(保存字母)和Weight(保存权值) 数据关系 R:Haffuman树中的叶子节点都是油Node组成 基本操作P: void initHfTree(Hnodetype huffnode[MAXNODE],int n)//初始化哈夫曼树 void inputHfTree(Hnodetype huffnode[MAXNODE],int n,char ch[],int weight[])//哈夫曼的输入 void huffmantree(Hnodetype huffnode[MAXNODE],int n,char ch[],int weight[]) //哈夫曼数的构建 void HuffmanCoding(Hcodetype cd,Hnodetype huffnode[MAXNODE],Hcodetype huffcode[MAXLEAF],int n) //哈夫曼树编码 算法的基本思想 构造哈夫曼树,根据哈夫曼编码规则对字母编码。 程序的流程 程序由四个模块组成: (1)输入模块:在主函数中节点个数及节点信息,初始化哈夫曼树 (2)建立Haffuman树模块:每次选择最小的两个根节点作为子树另构建一颗哈夫曼树 (3)编码模块:为每一个叶子节点编码 (4)输出模块:输出每个节点的信息(字母、字母的Haffuman编码) 三、详细设计 物理数据类型 #include stdio.h #include malloc.h #include iostream using namespace std; #define Maxsize 500 #define MAXBIT 10 #define MAXVALUE 10000 #define MAXLEAF 30 #define MAXNODE MAXLEAF*2-1 typedef struct { int bit[MAXBIT]; int start; }Hcodetype; typedef struct { int weight; char ch; int parent; int lchild; int rchild; }Hnodetype;算法的具体步骤 void initHfTree(Hnodetype huffnode[MAXNODE],int n)//初始化哈夫曼树 { for(int i=0;i2*n-1;i++) { huffnode[i].weight=0; huffnode[i].parent=-1; huffnode[i].lchild=-1; hu

文档评论(0)

hai1956012 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档