- 41
- 0
- 约5.92千字
- 约 9页
- 2018-04-12 发布于贵州
- 举报
哈夫曼树哈夫曼树
数据结构实验报告
实验名称: 实验三——哈夫曼树
学生姓名: 吴淳
班 级: 2011211106班
班内序号: 27
学 号: 2011210180
日 期: 2012年11月29日
实验要求
一、实验目的:
掌握二叉树基本操作的实现方法;
了解哈夫曼树的思想和相关概念;
培养使用二叉树解决实际问题的能力。
二、实验内容:
利用二叉树结构实现哈夫曼编/解码器
1.初始化(Init):能够对输入的任意长度的字符串s进行统计,统计每个字符的频度,并建立哈夫曼树。
2.建立编码表(CreatTable):利用已经建好的哈夫曼树进行编码,并将每个字符的编码输出。
3.编码(Encoding):根据编码表对输入的字符串进行编码,并将编码后的字符串输出。
4.译码(Decoding):利用已经建好的哈夫曼树对编码后的字符串进行译码,并输出译码结果。
5.打印(Print):以直观的方式打印哈夫曼树(选作)。
6.计算输入的字符串编码前和编码后的长度,并进行分析,讨论哈夫曼编码的压缩效果。
测试数据如下:
I love data structure.I love computer.I will try my best to study data structure.
7.用户界面可以设计成“菜单”方式,能进行交互,根据输入的字符串中每个字符出现的次数统计频度,对没有出现的字符一律不用编码。
2. 程序分析
2.1存储结构
哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。且哈夫曼树是一棵只有度为0和2的结点的正则二叉树。一棵有n个叶子的哈夫曼树共有2n-1个结点,可以用一个大小为2n-1的一位数组存放哈夫曼树的各个结点。由于每个结点同时还包含其双亲信息和孩子结点的信息,所以可以使用一个静态三叉链表来存储哈夫曼树。
class Huffman
{
private:
HNode*HTree;//哈夫曼树
HCode*HcodeTable;//编码表
public:
void Init(int a[],int n);//初始化,
void CreatTable(char character[],int n);//创立编码表
void Encoding(char*s,int n);//编码
int Decoding(char*s,int n);//解码
void Selectmin(HNode*hTree,int n,int i1,int i2);//挑出最小的
};
二叉树是由一个根结点和两棵互不相交的左右子树构成:
【图一】正则二叉树的结构图
静态三叉链表C++描述如下:
struct HNode {
int weight; //结点权值
int parent; //双亲指针
int lchild; //左孩子指针
int rchild; //右孩子指针
};
示意图1:
【图二】示意图1
编码表的结点结构:
struct HCode
{
char data; //编码表中的字符
char code[100]; //该字符对应的编码
};
示意图2:
【图三】示意图2
2.2关键算法分析
一.关键算法:
(1).初始化函数(void Huffman::Init(int weight[],int n))
算法伪代码:
1. 创建一个长度为2n-1的三叉链表;
2.获得输入字符串的第一个字符,并赋予其相应权值,同时将其双亲、左孩子、右孩子值赋为-1;
3.重复上一步;
4.合成哈夫曼树:i=n;Selectmin(HTree,i,x,y);合成HTree[x]和 HTree[x]。
5. 若满足i2*n-1,重复上一步,每次i++。
(2).创建编码表void Huffman::CreatTable(char character[],int n)
算法伪代码:
1.初始化编码表
2.i=0;HcodeTable[i].data=character[i];child=i;parent=HTree[i].parent;k=0;
. 3 .如果parent!=-1;
3.1如果当前结点是其双亲的左孩子,则其对应的编码为0,否则为1;
3.2.k++;
3.3 将当前结点的parent值赋给child值,child的parent值赋给parent值;
3.4重复上面三步;
4.若in
您可能关注的文档
最近下载
- 急救中心建筑设计规范.docx VIP
- flac3d5.0软件隧道支护与开挖命令流.docx VIP
- 2025中国华电校园招聘笔试参考题库附带答案详解.docx
- 西北大学自考学位英语真题.pdf VIP
- HXD1C型电力机车网控制系统.pdf VIP
- 创意写作教程 第二版 课件全套 葛红兵 第1--13章 绪论、突破作家障碍---政务文书与商务文书写作.pptx
- 风力发电场高处作业安全规程,NB_T31052-2014.pdf VIP
- 中国瘢痕修复诊疗指南(2025版).docx VIP
- 网课超星尔雅光影中国选修课答案光影中国尔雅答案.docx VIP
- 2025小学教科版(2024)科学一年级下册教学设计(附目录).docx
原创力文档

文档评论(0)