欢迎来到天天文库
浏览记录
ID:58865189
大小:96.50 KB
页数:15页
时间:2020-09-22
《哈弗曼树编码译码综合实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、院系:计算机学院实验课程:数据结构预算法实验项目:哈弗曼树综合实验指导老师:开课时间:2009~2010年度第1学期专业:计算机类班级:08本6班学生:学号:华南师范大学教务处华南师范大学实验报告学生姓名禤欢子学号专业计算机类年级、班级08本6班课程名称数据结构与算法分析实验项目哈弗曼树综合实验实验时间2009年12月25日指导老师黄定实验评分-----------------------------------------------------------------------------------------------------------------
2、-----【需求分析】本实验需要设计程序,输入叶子结点和权值,建立一颗哈弗曼树,并根据哈弗曼树进行编码和译码操作。键盘中输入或者从文件中读入哈弗曼树;键盘中输入或者从源文件中读入需要编码的源文,然后将源文根据哈弗曼树的权值,译码为二进制代码。最后实现凹入显示法显示哈弗曼树。【概念设计】本程序由HaffmanTree.h、HaffmanTree.cpp、main.cpp三个文件构成。HaffmanTree.h中定义了哈弗曼树的储存结构体HaffmanNode,里面定义了weight、parent、lchild、rchild四个变量来描述哈弗曼树的储存结构。在Haffm
3、anTree.h中还定义了一个名为HaffmanTree的类,里面定义的是建树、编码、译码和凹入显示哈弗曼树等函数,而相关的实现代码则在HaffmanTree.cpp中给出。main.cpp中主要是实现内部函数与用户界面的对接。【详细设计】具体代码实现如下://HaffmanTree.h#include#include#includestructHuffmanNode//哈夫曼树的一个结点{intweight;intparent;intlchild,rchild;};classHuffmanTree//哈夫曼树{
4、private:HuffmanNode*Node;//Node[]存放哈夫曼树char*Info;//Info[]存放源文用到的字符——源码,如'a','b','c','d','e',此内容可以放入结点中,不单独设数组存放intLeafNum;//哈夫曼树的叶子个数,也是源码个数public:HuffmanTree();~HuffmanTree();voidCreateHuffmanTree();/*在内存中建立哈夫曼树,存放在Node[]中。让用户从两种建立哈夫曼树的方法中选择:1.从键盘读入源码字符集个数,每个字符,和每个字符的权重,建立哈夫曼树,并将哈夫曼树写
5、入文件hfmTree中。2.从文件hfmTree中读入哈夫曼树信息,建立哈夫曼树*/voidCreateHuffmanTreeFromKeyboard();voidCreateHuffmanTreeFromFile();voidEncoder();/*使用建立好的哈夫曼树(如果不在内存,则从文件hfmTree中读入并建立内存里的哈夫曼树),对文件ToBeTran中的正文进行编码,并将码文写入文件CodeFile中。ToBeTran的内容可以用记事本等程序编辑产生。*/voidDecoder();/*待译码的码文存放在文件CodeFile中,使用建立好的哈夫曼树(如果
6、不在内存,则从文件hfmTree中读入并建立内存里的哈夫曼树)将码文译码,得到的源文写入文件TextFile中,并同时输出到屏幕上。*/voidPrintCodeFile();/*将码文文件CodeFile显示在屏幕上*/voidPrintHuffmanTree();/*将哈夫曼树以直观的形式(凹入表示法,或广义表,或其他树形表示法)显示在屏幕上,同时写入文件TreePrintFile中*/voidPrintHuffmanTree_aoru(intT,intlayer=1);/*凹入表示法显示哈夫曼树,由PrintHuffmanTree()调用*/};///////
7、////////////////////////////////////////////////////////////HuffmanTree.cpp#include#include//为使用整型最大值#include"HuffmanTree.h"usingnamespacestd;//******************************************************HuffmanTree::HuffmanTree(){Node=NULL;}//******************************
此文档下载收益归作者所有