📄 hfm_1.cpp
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -