幫別人改**,原**只能輸入定義好輸入字元個數、輸入的字元及每個字元的權重,來生成對應的哈夫曼輸和哈夫曼編碼,以及對應的解碼功能,在原**基礎是修改,能夠根據使用者輸入的字串,計算每個字元的權重,然後生成對應的編碼。
temp=i; // 標記陣列儲存末位位置
i=1;
printf("輸出哈夫曼解碼: \n");
typedef struct // 哈夫曼樹結點的結構
huffnode;
typedef struct // 哈夫曼編碼的儲存結構
huffcode;
int huffmancreate(huffnode *ht)
; while((c=getchar())!='\n')
for(int i=0;i<58;i++)
}for(i=1;i
for(i=1;i<=2*n -1;i++) // 對陣列初始化
ht[i].parent=ht[i].lchild=ht[i].rchild=0;
for(i=n+1;i<=2*n-1;i++)
else if(ht[j].weight}}
ht[i].lchild=p1; //p1 為新結點的左孩子
ht[i].rchild=p2; //p2 為新結點的右孩子
ht[i].weight=m1+m2; // 新結點的權值為最小權值和次小權值的和
ht[p1].parent=i;
ht[p2].parent=i;
}for(i=1;i<=n;i++)
//printf("哈夫曼樹已成功建立! \n");
return n;
}void encoding(huffnode *ht,huffcode *hcd,int n)
hcd[i]=d;
}printf("輸出哈夫曼編碼: \n");
for(i=1;i<=n;i++)
}void decoding(huffnode *ht,int n)
temp=i; // 標記陣列儲存末位位置
i=1;
printf("輸出哈夫曼解碼: \n");
while(i<=temp)
printf("%c",ht[f].data);
}printf("\n");
}void main()}}
哈夫曼編碼解碼
簡單實現編碼解碼功能 列印哈夫曼樹形 該怎麼做呢 求教!實現初始化,建立huffman樹,並完成字元的編碼 之前解碼用for迴圈不能夠重新復位遍歷 while更好用 include stdio.h include string.h define n 10 待編碼字元的個數,即樹中葉結點的最大個數 d...
哈夫曼編碼與解碼
include include include include define maxnum 60typedef struct huffnode typedef struct huffcode huffnode ht maxnum 2 存放哈夫曼樹 huffcode hcd maxnum 存放ht陣列...
哈夫曼編碼和解碼
試題描述 輸入為 一段英文或中文的文章 原文 對輸入的文章構造哈夫曼樹,生成對應的編碼,輸出為 原文所對應的編碼 譯文 根據已經生成的編碼表,輸入任意的譯文可以得到對應的原文。要求有執行結果截圖。include using namespace std typedef struct point huf...