hfm_1.cpp
来自「一些数据结构源代码」· C++ 代码 · 共 13 行
CPP
13 行
void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int *w,int n){
//w存放n个字符权值(均>0),构造赫夫曼树HT,并求n个字符赫夫曼编码HC。
if(n<=1) return;
m=2*n -1;
HT= (HuffmanTree)malloc((m+1)*sizeof(HTNode)); //0号单元未用
for ( p++=HT,i=1; i<=n;++i,++p, ++w) *p ={*w,0,0,0}
for ( ;i<=m;++i,++p) *p={0,0,0,0};
for (i=n+1;i<=m;++i ){ //建赫夫曼树,在HT[1,…,i-1]选择parent为0且weight最小的两个结点
Select(HT,i-1,s1,s2);
HT[s1].parent=i;HT[s2].parent=i;HT[i].lchild=s1; HT[i].rchild=s2;
HT[i].veiqht =HT[s1].weight+HT[s2].weight;
}
//—从叶子到根逆向求每个字符的赫夫曼编码———
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?