1 / 19
文档名称:

精选哈夫曼树编码实验报告.doc

格式:doc   大小:203KB   页数:19页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

精选哈夫曼树编码实验报告.doc

上传人:帅气的小哥哥 2022/8/8 文件大小:203 KB

下载得到文件列表

精选哈夫曼树编码实验报告.doc

文档介绍

文档介绍:哈夫曼树编码实验报告
2
数学学院数学类数学1班田娟
2

数据结构课程设计
报告
题 目: 哈夫曼编码/译码
学 院 数学与信息科学学 //哈夫曼树的叶子个数,也是源码个数

main()
建立哈夫曼树函数
// 函数功能:建立哈夫曼树
void HuffmanTree::CreateHuffmanTree()
函数功能:为哈夫曼树编码
void HuffmanTree::Encoder()
函数功能:对哈夫曼树进行译码
void HuffmanTree::Decoder()

// 函数功能:从文件中输出哈夫曼树的码文
void HuffmanTree::PrintCodeFile()
函数功能:用凹入法输出哈夫曼树
6
数学学院数学类数学1班田娟
6
void HuffmanTree::PrintHuffmanTree_aoru(int T,int layer)
3.主模块的流程及各子模块的主要功能;
哈夫曼编码/译码系统

显示哈夫曼树
建立哈夫曼树
显示哈夫曼树
编码
显示码文
译码
根本功能分析
4.模块之间的层次关系。
① 初始化: 从键盘接收字符集大小n,以及n个字符和n个权值。
② 建立哈夫曼树:构造哈夫曼树,即将HNode数组中的各个位置的各个域都添上相关的值,。
③ 构造哈夫曼编码:,,同时将字符与0、1代码串的一一对应关系打印到屏幕上。
④ 编码:利用已构造的哈夫曼编码〔〕〔明文〕中的正文进行编码,〔密文〕中。
⑤ 译码:〔密文〕中的代码按照③中建立的编码规那么将其翻译成字符集中字符所组成的字符串形式,进行译码,〔明文〕中。〔如果正确,〕
⑥ 显示哈夫曼树:从HNode数组中读入相关的结点信息,以凹入表方式将各个结点以及叶子结点的权值和左分支上的0和右分支上的
三、详细设计
1.采用c语言定义相关的数据类型;
结点的类型定义描述如下:
struct HuffmanNode //哈夫曼树的一个结点
{
int weight;
int parent;
int lchild,rchild;
char sourcecode;
7
数学学院数学类数学1班田娟
7
std::string code;
};
class HuffmanTree //哈夫曼树
{
private:
HuffmanNode *Node; //Node[]存放哈夫曼树
int LeafNum;
2. 伪码算法
public:
HuffmanTree();
~HuffmanTree();
void CreateHuffmanTree();
void CreateHuffmanTreeFromKeyboard();
void CreateHuffmanTreeFromFile();
void Encoder();
void Decoder();
void PrintCodeFile();
void PrintHuffmanTree();
void PrintHuffmanTree_aoru(int T,int layer=1);
};
// 构造函数
// 函数功能:初始化哈夫曼树
HuffmanTree::HuffmanTree()
{
Node=NULL;
LeafNum=0;
}
// 函数功能:将哈夫曼的数组的空间释放
//参数返回值:无
HuffmanTree::~HuffmanTree()
{
delete[] Node;
}
// 建立哈夫曼树函数
// 函