- 11
- 0
- 约1.07万字
- 约 15页
- 2017-03-17 发布于湖北
- 举报
【详细设计】
具体代码实现如下:
//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
您可能关注的文档
最近下载
- 《新生儿有创血气分析专家共识(2023)》解读PPT课件.pptx VIP
- 新生儿有创血气分析专家共识.pptx VIP
- 酒店设备维修工作流程.pdf VIP
- PPT课新修订《治安管理处罚法》课件培训.pptx VIP
- 2021 年全国一级建造师考试执业资格考试建筑-白金卷.docx VIP
- T_WSJD 57-2024 食品中蜡样芽胞杆菌呕吐毒素的测定.docx VIP
- 中力 电动搬运车 EPT20 -20RAS 售后手册.pdf
- (高清正版标准) ISO7637-1 ISO7637-2-2004 ISO7637-3 中文版.docx VIP
- 2828.1-2012计数抽样计划标准.pdf
- 国货彩妆的新媒体营销策略研究以花西子为例.docx
原创力文档

文档评论(0)