数据结构+哈夫曼编码+实验报告.doc
《数据结构+哈夫曼编码+实验报告.doc》由会员分享,可在线阅读,更多相关《数据结构+哈夫曼编码+实验报告.doc(6页珍藏版)》请在沃文网上搜索。
1、实验报告一、 实验目的掌握哈夫曼树及其应用。二、 实验内容利用哈夫曼算法,构造最优二叉树,然后对构造好的二叉树的叶子结点进行前缀编码。三、 实验步骤(1)审清题意,分析并理出解决问题的基本思路。(2) 根据基本思路,设计好程序的算法。 (3)根据算法编写源程序。(4) 在计算机上编译程序,检验程序的可运行性数据结构设计:/ 赫夫曼树和赫夫曼编码的存储结构 typedef struct / 结点的结构,在教科书第147页 unsigned int weight; / 结点的权值 unsigned int parent,lchild,rchild; HTNode,*HuffmanTree; / 动
2、态分配数组存储赫夫曼树 typedef char *HuffmanCode; / 动态分配数组存储赫夫曼编码表void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int* w,int n) / 算法6.12 / w存放n个字符的权值(均0),构造赫夫曼树HT,并求出n个字符的赫夫曼编码HC int start; unsigned f; / 以下是从叶子到根逆向求每个字符的赫夫曼编码 int m,i,s1,s2; unsigned c; HuffmanTree p; char *cd; if(n=1) / 叶子结点数不大于n return; m=
3、2*n-1; / n个叶子结点的赫夫曼树共有m个结点 HT=(HuffmanTree)malloc(m+1)*sizeof(HTNode); / 0号单元未用 for(p=HT+1,i=1;i=n;+i,+p,+w) / 从1号单元开始到n号单元,给叶子结点赋值 / p的初值指向1号单元 (*p).weight=*w; / 赋权值 (*p).parent=0; / 双亲域为空(是根结点) (*p).lchild=0; / 左右孩子为空(是叶子结点,即单结点树) (*p).rchild=0; for(;i=m;+i,+p) / i从n+1到m (*p).parent=0; / 其余结点的双亲域初
4、值为0 for(i=n+1;i=m;+i) / 建赫夫曼树 / 在HT1i-1中选择parent为0且weight最小的两个结点,其序号分别为s1和s2 select(HT,i-1,s1,s2); HTs1.parent=HTs2.parent=i; / i号单元是s1和s2的双亲 HTi.lchild=s1; / i号单元的左右孩子分别是s1和s2 HTi.rchild=s2; HTi.weight=HTs1.weight+HTs2.weight; / i号单元的权值是s1和s2的权值之和 HC=(HuffmanCode)malloc(n+1)*sizeof(char*); / 分配n个字符
5、编码的头指针向量(0不用) cd=(char*)malloc(n*sizeof(char); / 分配求编码的工作空间 cdn-1=0; / 编码结束符 for(i=1;i=n;i+) / 逐个字符求赫夫曼编码 start=n-1; / 编码结束符位置 for(c=i,f=HTi.parent;f!=0;c=f,f=HTf.parent) / 从叶子到根逆向求编码 if(HTf.lchild=c) / c是其双亲的左孩子 cd-start=0; / 由叶子向根赋值0 else / c是其双亲的右孩子 cd-start=1; / 由叶子向根赋值1 HCi=(char*)malloc(n-star
6、t)*sizeof(char); / 为第i个字符编码分配空间 strcpy(HCi,&cdstart); / 从cd复制编码(串)到HC free(cd); / 释放工作空间 源代码:#include / 字符串函数头文件 #include / 字符函数头文件 #include / malloc()等 #include / INT_MAX等 #include / 标准输入输出头文件,包括EOF(=Z或F6),NULL等 #include / atoi(),exit() #include / eof() #include / 数学函数头文件,包括floor(),ceil(),abs()等 #i
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 哈夫曼 编码 实验 报告
