数据结构哈夫曼树编码译码实验报告

数据结构哈夫曼树编码译码实验报告

ID:2468400

大小:448.00 KB

页数:18页

时间:2017-11-16

数据结构哈夫曼树编码译码实验报告_第1页
数据结构哈夫曼树编码译码实验报告_第2页
数据结构哈夫曼树编码译码实验报告_第3页
数据结构哈夫曼树编码译码实验报告_第4页
数据结构哈夫曼树编码译码实验报告_第5页
资源描述:

《数据结构哈夫曼树编码译码实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、【详细设计】具体代码实现如下://HaffmanTree.h#include#include#includestructHuffmanNode//哈夫曼树的一个结点{intweight;intparent;intlchild,rchild;};classHuffmanTree//哈夫曼树{private:HuffmanNode*Node;//Node[]存放哈夫曼树char*Info;//Info[]存放源文用到的字符——源码,如'a','b','c','d','e',此内容可以放入结点中,不

2、单独设数组存放intLeafNum;//哈夫曼树的叶子个数,也是源码个数public:HuffmanTree();~HuffmanTree();voidCreateHuffmanTree();/*在内存中建立哈夫曼树,存放在Node[]中。让用户从两种建立哈夫曼树的方法中选择:1.从键盘读入源码字符集个数,每个字符,和每个字符的权重,建立哈夫曼树,并将哈夫曼树写入文件hfmTree中。2.从文件hfmTree中读入哈夫曼树信息,建立哈夫曼树*/voidCreateHuffmanTreeFromKeyboard();voidCreateHuffma

3、nTreeFromFile();voidEncoder();/*使用建立好的哈夫曼树(如果不在内存,则从文件hfmTree中读入并建立内存里的哈夫曼树),对文件ToBeTran中的正文进行编码,并将码文写入文件CodeFile中。ToBeTran的内容可以用记事本等程序编辑产生。*/voidDecoder();/*待译码的码文存放在文件CodeFile中,使用建立好的哈夫曼树(如果不在内存,则从文件hfmTree中读入并建立内存里的哈夫曼树)将码文译码,得到的源文写入文件TextFile中,并同时输出到屏幕上。*/voidPrintCodeFil

4、e();/*将码文文件CodeFile显示在屏幕上*/voidPrintHuffmanTree();/*将哈夫曼树以直观的形式(凹入表示法,或广义表,或其他树形表示法)显示在屏幕上,同时写入文件TreePrintFile中*/voidPrintHuffmanTree_aoru(intT,intlayer=1);/*凹入表示法显示哈夫曼树,由PrintHuffmanTree()调用*/};///////////////////////////////////////////////////////////////////HuffmanTree.cp

5、p#include#include//为使用整型最大值#include"HuffmanTree.h"usingnamespacestd;//******************************************************HuffmanTree::HuffmanTree(){Node=NULL;}//******************************************************HuffmanTree::~HuffmanTree(){delete[]Node;}

6、//******************************************************voidHuffmanTree::CreateHuffmanTree(){charChoose;cout<<"你要从文件中读入哈夫曼树(按1),还是从键盘输入哈夫曼树(按2)?";cin>>Choose;if(Choose=='2'){//键盘输入建立哈夫曼树CreateHuffmanTreeFromKeyboard();}//choose=='2'else{//从哈夫曼树文件hfmTree.dat中读入信息并建立哈夫曼树CreateH

7、uffmanTreeFromFile();}}//******************************************************voidHuffmanTree::CreateHuffmanTreeFromKeyboard(){intNum;cout<<"请输入源码字符集个数:";cin>>Num;if(Num<=1){cout<<"无法建立少于2个叶子结点的哈夫曼树。";return;}LeafNum=Num;Node=newHuffmanNode[2*Num-1];Info=newchar[2*Num-

8、1];for(inti=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。