資源簡介
介紹了哈夫曼樹編程的具體實現,對于幫助哈夫曼樹的理解具有重要的參考意義。
代碼片段和文件信息
#include
#include
#include
#define?N?8
typedef??struct?
{
int??weight;???
int??parentlchildrchild;
}HTNode*HuffmanTree;
typedef??char?**HuffmanCode;
void?Select(HuffmanTree?&HT?int?i?int?&s1?int?&s2)
{
s1=0;s2=0;
int?min1=30000min2=30000;
for(int?k=1;k<=i;k++)
{
if(HT[k].parent==0)
{
if(HT[k].weight {
min2=min1;
min1=HT[k].weight;
s2=s1;
s1=k;
}
else?if(HT[k].weight {
min2=HT[k].weight;
s2=k;
}
}
}
}
void?HuffmanCoding(HuffmanTree?&HTHuffmanCode?&HCint?*wint?n)?
{//HT是Huffman樹,HC是Huffman編碼,n為字符個數,w指向n個字符的權
int?mis1s2startcf;
HuffmanTree?p;
char?*?cd;
if?(n<=1)?
return;
m=2*n-1;???????????????????????????????????????????????????//m為HT結點總數,n為葉子結點個數
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));
for(p=(HT+1)i=1;i<=n;++i++p++w)
{
p->weight=*w;
p->parent=0;
p->lchild=0;
p->rchild=0;
}
for(;i<=m;++i++p)
{
- 上一篇:C++實現解方程(代碼)
- 下一篇:c++ 記錄鍵盤事件(vs2003)
評論
共有 條評論