没有合适的资源?快使用搜索试试~ 我知道了~
赫夫曼树和赫夫曼编码的存储表示.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 142 浏览量
2022-07-06
16:20:45
上传
评论 1
收藏 44KB DOC 举报
温馨提示
试读
17页
赫夫曼树和赫夫曼编码的存储表示
资源推荐
资源详情
资源评论
#i nclude <iostream>
#i nclude <fstream>
#i nclude <iomanip>
#i nclude <string>
using namespace std;
//***********************************
// 赫夫曼树和赫夫曼编码的存储表示
//***********************************
typedef struct {
unsigned int weight;
unsigned int parent,lChild,rChild;
}HTNode, *HuffmanTree; // 动态分配数组存储赫夫曼树
typedef struct {
char ch;
char* hufCh;
}HuffmanCode; // 动态分配数组存储赫夫曼编码表
//***********************************
// 权值字符结点类型
//***********************************
typedef struct {
char ch;
int wt;
} wElem; // 动态分配数组存储读入字符与权值
//***********************************
//赫夫曼编码函数
//构造赫夫曼树 HT , 并求出 n 个字符的赫夫曼编码 HC
//将结果存入 hufTree.txt
//***********************************
void HuffmanCoding( HuffmanTree &,HuffmanCode * , wElem * , int);
//***********************************
// 赫夫曼译码函数
// 对文件里的代码进行译码
// 将结果存入 textfile.txt
//***********************************
void DeCoding( HuffmanTree, HuffmanCode *, const char*, const int);
//************************************
// 选择两个最小的结点
//************************************
void SelectTwoNode( HuffmanTree , int , int& , int& );
//**************************************************
// 赫夫曼编码函数的实现
// w 存放 n 个字符的权值( 均>0 )
// 构造赫夫曼树 HT , 并求出 n 个字符的赫夫曼编码 HC
//**************************************************
void HuffmanCoding( HuffmanTree &HT , HuffmanCode* HC , wElem* w
, int n )
{
if( n <= 1 ) return;
int m = 2 * n - 1; // 赫夫曼树的结点数目
HT = ( HuffmanTree ) malloc ((m + 1) * sizeof( HTNode ) ); //0 号单元
未用
HuffmanTree p = HT;
p++; // p 指向 HT 的第 1 号单元
int i=0 , ww=0; // ww 为 wElem* w 的下标
for( i = 1 ; i <= n ; i++ , p++ , ww++ )
{
p->weight = w[ww].wt;
p->parent = p->lChild = p->rChild = 0; //
} // 初始化
for( ; i <= m ; ++i , ++p ) //
{
剩余16页未读,继续阅读
资源评论
omyligaga
- 粉丝: 55
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功