電文編碼解碼 哈夫曼編碼

2021-10-13 17:52:35 字數 1670 閱讀 2547

幫別人改**,原**只能輸入定義好輸入字元個數、輸入的字元及每個字元的權重,來生成對應的哈夫曼輸和哈夫曼編碼,以及對應的解碼功能,在原**基礎是修改,能夠根據使用者輸入的字串,計算每個字元的權重,然後生成對應的編碼。

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...