网站大量收购独家精品文档,联系QQ:2885784924

数据结构上机实树和二叉树的应用_哈夫曼编码设计 (含代码和报告).doc

数据结构上机实树和二叉树的应用_哈夫曼编码设计 (含代码和报告).doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构上机实树和二叉树的应用_哈夫曼编码设计 (含代码和报告)

数据结构实验报告 题目:数据结构实验报告 学院:工商管理学院 班级:信息1001 姓名:彭振宇 学号:座机电话号码 时间:2012/6/26 实验三:树和二叉树的应用 实验题目:树和二叉树的应用 实验内容:哈夫曼编码设计 三.实验目的:掌握树和二叉树的概念及工作原理,运用其原理及概念完成上述实验题中的内容。 四.实验要求:为了使学生更好的掌握与理解课堂上老师所讲的概念与原理,实验前每个学生要认真预习所做的实验内容及编写源程序伪码(写在纸上及盘中均可)以便在实验课中完成老师所布置的实验内容。 五.概要设计原理: 1.选择parent为0且weight最小的两个结点。其序号分别为s1和s2 2.建立赫夫曼树叶 3.从叶子到根逆向求每个字符的赫夫曼编码 4.输出构造的树 5.输出得到的各权Huffman编码 六.详细程序清单及注释说明: #include #include #include #define MAXSIZE 30 //最大叶子数 #define MAXCODE 10000 //编码最大长度 #define OK 1 #define ERROR 0 #define OVERLOW -2 // 赫夫曼树和赫夫曼编码的存储表示 typedef struct unsigned int weight; unsigned int parent, lchild, rchild; HTNode,*HuffmanTree; //动态分配数组存储赫夫曼树 typedef char **HuffmanCode; //动态分配数组存储赫夫曼编码表 /* void Select HuffmanTree HT, int n, int *s1, int *s2 //选择parent为0且weight最小的两个结点。其序号分别为s1和s2 int minsum 1000000; int i,j; for i 1; i n; i++ if HT[i].parent continue; for j i+1; j n; j++ if HT[j].parent continue; if HT[i].weight + HT[j].weight minsum minsum HT[i].weight + HT[j].weight; *s1 i; *s2 j; void CreateHuffmanTree HuffmanTree HT, int *w, int n //建立赫夫曼树叶 int m, s1, s2, i; if n 1 return; m 2*n-1; HT HuffmanTree malloc m+1 * sizeof HTNode ; for i 1; i n; i++, ++w HT[i].weight *w; HT[i].parent 0; HT[i].lchild 0; HT[i].rchild 0; for ;i m; ++i HT[i].weight 0; HT[i].parent 0; HT[i].lchild 0; HT[i].rchild 0; for i n+1; i m; i++ //在HT[1.i-1]选择parent为0且weight最小的两个结点,其序号分别为s1和s2 Select HT, i-1, s1, s2 ; HT[i].weight HT[s1].weight + HT[s2].weight; HT[i].lchild s1; HT[i].rchild s2; HT[s1].parent i; HT[s2].parent i; void HuffmanCoding HuffmanTree HT,HuffmanCode HC,int n //从叶子到根逆向求每个字符的赫夫曼编码 int start, f; unsigned int c; int i 1; char *cd; cd char * malloc n * sizeof char ; //分配n个字符编码的头指针向量 HC HuffmanCode malloc sizeof char * * n+1 ; cd[n-1] \0; for ; i n; ++i start n-1; //初始化编码起始指针 c i; f HT[i].parent; for ; f; f HT[f].parent if HT[f].lchild c cd[--start] 0; else cd[--start] 1; c f

文档评论(0)

qqmqq1 + 关注
内容提供者

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

1亿VIP精品文档

相关文档