资源简介
用C++实现的哈夫曼编译码器,可以实现创建哈夫曼树、对txt文件进行编码、译码,也可以查看生成的哈夫曼树。数据结构作业参考之必备品。
代码片段和文件信息
#include
#include
#include
#include//包含系统函数
#include//含有getch()
using namespace std;
class Hufmantree
{
private:
int weight;
int parent;
int lchild;
int rchild;
char letter;
public:
Hufmantree();
Hufmantree(int wint pint lint rchar le):weight(w)parent(p)lchild(l)rchild(r)letter(le){};
Hufmantree* InitTree(char*lint* wint n);
char** CodeList(Hufmantree *Htint n);
int gweight();
int gparent();
int glchild();
int grchild();
char gletter();
void cweight(int);
void cparent(int);
void clchild(int);
void crchild(int);
void cletter(char);
void Select(Hufmantree *Htint nint &s1int &s2);
void Prin(Hufmantree *Ht);
void Outchart(char**Hcint n);
void SaveTree(Hufmantree*Ht);
void SaveList(char**Hcint);
void encode(Hufmantree *Htchar**Hc); //编码
void decode(Hufmantree *Ht);//译码
void findchar(Hufmantree *Htchar *pintint &jint &length);//译码寻找函数
Hufmantree* GetTree();//从磁盘文件读树的信息
void treeprint(Hufmantree*Htint iint j);
void Tprint(Hufmantree*Ht);
Hufmantree* Creattree();
void Menu();
};
int main()
{
/********************测试**********************/
Hufmantree t;
t.Menu();
// Hufmantree *Ht;
// char **Hc;
/* Ht=t.InitTree(ab7);
Ht=t.GetTree();
t.Prin(Ht);
t.encode(HtHc);
t.Tprint(Ht);
Ht=t.Creattree();
Hc=t.CodeList(Ht27);
t.Outchart(Hc27);
t.SaveList(Hc27);
t.encode(HtHc);
t.decode(Ht);
*/
return 0;
}
/***********************构造函数和基本初等函数****************/
Hufmantree::Hufmantree()
{
letter=0;
weight=0;
parent=0;
lchild=0;
rchild=0;
}
/***********************获得相关的值**********************/
int Hufmantree::gweight(){return weight;}
int Hufmantree::gparent(){return parent;}
int Hufmantree::glchild(){return lchild;}
int Hufmantree::grchild(){return rchild;}
char Hufmantree::gletter(){return letter;}
/**********************改变相关的值*********************/
void Hufmantree::cweight(int w){weight=w;}
void Hufmantree::cparent(int p){parent=p;}
void Hufmantree::clchild(int l){lchild=l;}
void Hufmantree::crchild(int r){rchild=r;}
void Hufmantree::cletter(char le){letter=le;}
/***************************************初始化树相关的***************/
void Hufmantree::Select(Hufmantree *Htint nint &s1int &s2) //选择两个最小值
{
int i;
for(i=1;i<=n;i++)
{
if(Ht[i].gparent()==0)
{
s1=i;
}
}
for(i=1;i<=n;i++)
{
if(Ht[i].parent==0)
{
if(Ht[i].gweight()<=Ht[s1].gweight())
{s1=i;}
}
}
for(i=1;i<=n;i++)
{
if((Ht[i].parent==0)&&(i!=s1))
{
s2=i;
}
}
for(i=1;i<=n;i++)
{
if((Ht[i].parent==0)&&(i!=s1))
{
if(Ht[i].weight<=Ht[s2].weight)
{
s2=i;
}
}
}
}
/***************************建立树******
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-10-03 09:34 huffmanOK\
文件 165 2012-10-03 09:33 huffmanOK\codefile.txt
目录 0 2013-08-21 22:07 huffmanOK\Debug\
文件 708 2012-10-03 09:33 huffmanOK\Debug\cl.command.1.tlog
文件 10074 2012-10-03 09:33 huffmanOK\Debug\CL.read.1.tlog
文件 366 2012-10-03 09:33 huffmanOK\Debug\CL.write.1.tlog
文件 320 2015-12-03 09:31 huffmanOK\Debug\codefile.txt
文件 614781 2012-10-03 09:33 huffmanOK\Debug\edit.obj
文件 739 2012-10-01 14:19 huffmanOK\Debug\hfmtree.txt
文件 697344 2012-10-03 09:33 huffmanOK\Debug\huffman.exe
文件 406 2012-10-03 09:33 huffmanOK\Debug\huffman.exe.em
文件 472 2012-10-03 09:33 huffmanOK\Debug\huffman.exe.em
文件 381 2012-10-03 09:33 huffmanOK\Debug\huffman.exe.intermediate.manifest
文件 1807700 2012-10-03 09:33 huffmanOK\Debug\huffman.ilk
文件 73 2012-10-03 09:33 huffmanOK\Debug\huffman.lastbuildstate
文件 3824 2012-10-03 09:33 huffmanOK\Debug\huffman.log
文件 2927616 2012-10-03 09:33 huffmanOK\Debug\huffman.pdb
文件 210 2012-10-03 09:33 huffmanOK\Debug\huffman_manifest.rc
文件 2 2012-10-03 09:33 huffmanOK\Debug\li
文件 2 2012-10-03 09:33 huffmanOK\Debug\li
文件 1456 2012-10-03 09:33 huffmanOK\Debug\li
文件 3274 2012-10-03 09:33 huffmanOK\Debug\li
文件 858 2012-10-03 09:33 huffmanOK\Debug\li
文件 209 2012-10-01 14:19 huffmanOK\Debug\list.txt
文件 402 2012-10-03 09:33 huffmanOK\Debug\mt.command.1.tlog
文件 442 2012-10-03 09:33 huffmanOK\Debug\mt.read.1.tlog
文件 338 2012-10-03 09:33 huffmanOK\Debug\mt.write.1.tlog
文件 560 2012-10-03 09:33 huffmanOK\Debug\rc.command.1.tlog
文件 414 2012-10-03 09:33 huffmanOK\Debug\rc.read.1.tlog
文件 318 2012-10-03 09:33 huffmanOK\Debug\rc.write.1.tlog
文件 88 2015-12-03 09:31 huffmanOK\Debug\textfile.txt
............此处省略26个文件信息
- 上一篇:C语言读HZK16HZK24HZK32 显示
- 下一篇:c++数据结构 算法模板
相关资源
- 哈夫曼编码压缩文件,c/c++课程设计
- 哈夫曼编码/译码器 完整版课程数据结
- 哈夫曼编码vc++6.0
- 用哈夫曼编码压缩文件
- 哈夫曼编码压缩c++版和QT5版 QT5版实现
- 香农费诺哈夫曼编码结果分析C++
- c++自适应哈夫曼编码
- c语言哈夫曼编码及译码
- 游程哈夫曼编码结合
- c语言哈夫曼编码编码+译码,有注释
- 哈夫曼编码译码
- 数据结构作业 dijkstra算法应用 C++
- 对26个英文字母进行哈夫曼编码
- 哈夫曼编码解码的实现及运行截图C语
- 哈夫曼编码译码器绝对可以运行c语言
- 日历管理系统.cpp
- 哈夫曼树设计——利用哈夫曼编码进
- 数据结构C语言之哈夫曼编码
- 自适应哈夫曼编码C++
- 哈夫曼编码与解码(C语言实现)
- 用哈夫曼编码实现文件压缩代码+报告
- 哈夫曼编码译码器 C语言 数据结构课
- 哈夫曼编码与译码附报告
- 哈夫曼编码系统C语言实现
- 数据结构哈夫曼编码译码C语言版程序
- C语言-哈夫曼编码实验报告
- 基于哈夫曼编码的文件压缩解压程序
- 哈夫曼编码译码器实验报告内
- 哈夫曼编码
- c++实现的哈夫曼编码和解码源代码
评论
共有 条评论