文档详情

数据结构哈夫曼树编码译码实验报告讲解.doc

发布:2017-03-16约1.07万字共15页下载文档
文本预览下载声明
【详细设计】 具体代码实现如下: //HaffmanTree.h #includeiostream #includefstream #includestring struct HuffmanNode //哈夫曼树的一个结点 { int weight; int parent; int lchild,rchild; }; class HuffmanTree //哈夫曼树 { private: HuffmanNode *Node; //Node[]存放哈夫曼树 char *Info; //Info[]存放源文用到的字符——源码,如a,b,c,d,e,此内容可以放入结点中,不单独设数组存放 int LeafNum; //哈夫曼树的叶子个数,也是源码个数 public: HuffmanTree(); ~HuffmanTree(); void CreateHuffmanTree(); /*在内存中建立哈夫曼树,存放在Node[]中。 让用户从两种建立哈夫曼树的方法中选择: 1.从键盘读入源码字符集个数,每个字符,和每个字符的权重,建立哈夫曼树, 并将哈夫曼树写入文件hfmTree中。2.从文件hfmTree中读入哈夫曼树信息,建立哈夫曼树*/ void CreateHuffmanTreeFromKeyboard(); void CreateHuffmanTreeFromFile(); void Encoder(); /*使用建立好的哈夫曼树(如果不在内存,则从文件hfmTree中读入并建立内存里的哈夫曼树), 对文件ToBeTran中的正文进行编码,并将码文写入文件CodeFile中。 ToBeTran的内容可以用记事本等程序编辑产生。*/ void Decoder(); /*待译码的码文存放在文件CodeFile中,使用建立好的哈夫曼树(如果不在内存, 则从文件hfmTree中读入并建立内存里的哈夫曼树)将码文译码, 得到的源文写入文件TextFile中,并同时输出到屏幕上。*/ void PrintCodeFile(); /*将码文文件CodeFile显示在屏幕上*/ void PrintHuffmanTree(); /*将哈夫曼树以直观的形式(凹入表示法,或广义表,或其他树形表示法)显示在屏幕上, 同时写入文件TreePrintFile中*/ void PrintHuffmanTree_aoru(int T,int layer=1); /*凹入表示法显示哈夫曼树,由PrintHuffmanTree()调用*/ }; ///////////////////////////////////////////////////////////////////HuffmanTree.cpp #includestring #includelimits //为使用整型最大值 #includeHuffmanTree.h using namespace std; //****************************************************** HuffmanTree::HuffmanTree() { Node=NULL; } //****************************************************** HuffmanTree::~HuffmanTree() { delete[]Node; } //****************************************************** void HuffmanTree::CreateHuffmanTree() { char Choose; cout你要从文件中读入哈夫曼树(按1),还是从键盘输入哈夫曼树(按2)?; cinChoose; if(Choose==2) {//键盘输入建立哈夫曼树 CreateHuffmanTreeFromKeyboard(); }//choose==2 else { //从哈夫曼树文件hfmTree.dat中读入信息并建立哈夫曼树 CreateHuffmanTreeFromFile(); } } //****************************************************** void HuffmanTree::CreateHuff
显示全部
相似文档