资源简介
功能:1、初始化:能够对输入的任意长度的字符串s进行统计,统计每个字符的频度并建立赫夫曼树
2、建立编码表:利用已经建好的赫夫曼树进行编码,并将每个字符的编码输出。
3、编码:根据编码表对输入的字符串进行编码,并将编码后的字符串输出。
4、译码:利用已经建好的赫夫曼树对编码后的字符串进行译码,并输出译码结果。
代码片段和文件信息
// HuffmanTree.cpp:
#include “HuffmanTree.h“
#include“iostream.h“
/*
* 前置条件:哈弗曼树不存在
* 输 入:无
* 功 能:初始化哈弗曼树
* 输 出:无
* 后置条件:创建一个空哈弗曼树
*/
HuffmanTree::HuffmanTree()
{
for(int i=0;i {
w[i].weight=0;
w[i].a=NULL;
s[i]=NULL;
}
for( i=0;i {
code[i]=-1;
}
Count();
i=0;
while((w[i].a!=NULL))
{
i++;
}
m=i;
InitHuffmanTree();
}
/*
* 前置条件:哈弗曼树已存在
* 输 入:无
* 功 能:销毁哈弗曼树
* 输 出:无
* 后置条件:释放哈弗曼树所占用的存储空间
*/
HuffmanTree::~HuffmanTree()
{
}
/*
* 前置条件:存在一个空哈弗曼树
* 输 入:字符串数组
* 功 能:初始化哈弗曼树
* 输 出:无
* 后置条件:哈弗曼树被初始化
*/
void HuffmanTree::InitHuffmanTree()
{
for (int i=0; i<2*m-1; i++) //初始化
{
huffmantree [i].parent= -1;
huffmantree [i].lchild= -1;
huffmantree [i].rchild= -1;
huffmantree[i].data.weight=100;
}
for (i=0; i {
huffmantree[i].data.weight=w[i].weight;
huffmantree[i].data.a=w[i].a;
}
for (int k=m; k<2*m-1; k++) //n-1次合并
{
SelectCombine(km); //在哈弗曼树中找权值最小的两个结点并合并
}
}
void HuffmanTree::ReInit()
{
for(int i=0;i {
w[i].weight=0;
w[i].a=NULL;
s[i]=NULL;
}
for( i=0;i {
code[i]=-1;
}
Count();
i=0;
while((w[i].a!=NULL))
{
i++;
}
m=i;
InitHuffmanTree();
}
/*
* 前置条件:存在一个非空哈弗曼树
* 输 入:无
* 功 能:建立编码表利用已经建好的赫夫曼树进行编码,并将每个字符的编码输出
* 输 出:每个字符的编码
* 后置条件:编码表完成
*/
void HuffmanTree::CreateTableHuffmanTree()
{
Code cd;
int cpj;
for(int i=0;i {
cd.start=m-1;
c=i;
p=huffmantree[c].parent;
while(p!=-1)
{
if(huffmantree[p].lchild==c)
cd.code[cd.start]=0;
else
cd.code[cd.start]=1;
cd.start--;
c=p;
p=huffmantree[c].parent;
}
for(j=cd.start+1;j Huffcode[i].code[j]=cd.code[j];
Huffcode[i].start=cd.start;
}
cout<<“编码成功!“< cout<<“编码结果如下:“< for(i=0;i {
cout< for(j=Huffcode[i].start+1;j cout< }
}
/*
* 前置条件:编码表完成
* 输 入:无
* 功 能:编码,根据编码表对输入的字符串进行编码,并将编码后的字符串输出
* 输 出:编码后的字符串
* 后置条件:编码完成
*/
void HuffmanTree::Encoding()
{
cout<<“对输入字符串的编码如下:“< int k=0ij=0p;
while(s[k]!=NULL)
{
for(i=0;i {
if(huffmantree[i].data.a==s[k])
{
for(p=Huffcode[i].start+1;p {
cout< code[j++]=Huffcode[i].code[p];
}
}
}
k++;
}
cout< }
/*
* 前置条件:编码完成
* 输 入:无
* 功 能:译码,利用已经建好的赫夫曼树对编码后的字
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
.CA.... 196724 2003-02-27 02:26 08212291_王碧珺_实验三_哈夫曼树\Debug\experiment03_2.exe
.CA.... 317728 2003-02-27 02:26 08212291_王碧珺_实验三_哈夫曼树\Debug\experiment03_2.ilk
.CA.... 43520 2009-11-22 18:13 08212291_王碧珺_实验三_哈夫曼树\Debug\experiment03_2.opt
.CA.... 248812 2003-02-27 02:24 08212291_王碧珺_实验三_哈夫曼树\Debug\experiment03_2.pch
.CA.... 533504 2003-02-27 02:24 08212291_王碧珺_实验三_哈夫曼树\Debug\experiment03_2.pdb
.CA.... 20040 2003-02-27 02:24 08212291_王碧珺_实验三_哈夫曼树\Debug\HuffmanTree.obj
.CA.... 7645 2003-02-27 02:26 08212291_王碧珺_实验三_哈夫曼树\Debug\main.obj
.CA.... 58368 2003-02-27 02:26 08212291_王碧珺_实验三_哈夫曼树\Debug\vc60.idb
.CA.... 69632 2003-02-27 02:24 08212291_王碧珺_实验三_哈夫曼树\Debug\vc60.pdb
.CA.... 4498 2009-11-22 01:10 08212291_王碧珺_实验三_哈夫曼树\experiment03_2.dsp
.CA.... 536 2009-11-20 21:52 08212291_王碧珺_实验三_哈夫曼树\experiment03_2.dsw
.CA.... 50176 2003-02-27 02:38 08212291_王碧珺_实验三_哈夫曼树\experiment03_2.ncb
.CA.... 53760 2003-02-27 02:38 08212291_王碧珺_实验三_哈夫曼树\experiment03_2.opt
.CA.... 944 2003-02-27 02:26 08212291_王碧珺_实验三_哈夫曼树\experiment03_2.plg
.CA.... 6778 2003-02-27 02:24 08212291_王碧珺_实验三_哈夫曼树\HuffmanTree.cpp
.CA.... 1724 2003-02-27 02:24 08212291_王碧珺_实验三_哈夫曼树\HuffmanTree.h
.CA.... 1132 2003-02-27 02:16 08212291_王碧珺_实验三_哈夫曼树\main.cpp
.C.D... 0 2003-02-27 00:09 08212291_王碧珺_实验三_哈夫曼树\Debug
.C.D... 0 2003-02-27 00:09 08212291_王碧珺_实验三_哈夫曼树
----------- --------- ---------- ----- ----
1615521 19
- 上一篇:WeTalk.zip
- 下一篇:c语言实现电子时钟课程设计
相关资源
- USB CAN Tool 源代码(LabVIEW 2011环境)
- 超声波水表源代码
- OLED驱动源码
- 一个模糊PID温度控制算法源代码
- tm1650+stm32f103源码(board_tm1650.c)
- 颜色识别形状识别STM103嵌入式代码
- cheat engine 7.2源码
- CrySearch内存搜索器源码
- 数据结构 图的遍历源代码
- 数据结构实验源代码集
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- TCP/IP客户端和服务器端源代码,好用
- FTP客户端源码(c++)
- MFC视频播放器源码(支持avi/wma/mp3等格
- CreatBitmap图片合成源码
- 交互式计算机图形学 第六版 OpenGL源代
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
- c++ 虚拟摄像头
- vs2008 can总线通讯源码
- 宠物管理系统课程设计(源码+数据库
- hook,捕获所有案件,查找所有窗口,
- C语言课设计算器
- Windows扩展命令程序(源码)
- c语言实现火车订票系统(控制台)源
- 数据结构教程李春葆第五版书中例题
- 鼠标连点器(附源码)
评论
共有 条评论