首先根據給定的n個字元的權值構造哈夫曼樹。通過遍歷此二叉樹完成各字元的哈夫曼編碼,另輸入一組『0』、『1』**構成的報文將其翻譯成對應的字元資訊。
廢話不說直接上**:
#include#include#define uint_imax 10000
using namespace std;
typedef struct htnode, *huffmantree;
int n;
char coding[100];
int min(huffmantree &ht,int i)
} ht[flag].parent = 1;//作個標記,說明已經被選擇了,因為在select函式中要選擇權值小的兩個結點
return flag;
}
void select(huffmantree &ht, int i, int &s1, int &s2)
void createhuffmantree(huffmantree &ht, char t, int w)
}// cout<>p;
if(p!='1'&&p!='0'&&p!='#')
coding[k]=p;
if(p=='#')
symbol=0; //#號結束標誌
k++;
}if(x==1)
else
return 0;
}
執行結果如圖:
哈夫曼編碼與解碼
include include include include define maxnum 60typedef struct huffnode typedef struct huffcode huffnode ht maxnum 2 存放哈夫曼樹 huffcode hcd maxnum 存放ht陣列...
哈夫曼編碼解碼
簡單實現編碼解碼功能 列印哈夫曼樹形 該怎麼做呢 求教!實現初始化,建立huffman樹,並完成字元的編碼 之前解碼用for迴圈不能夠重新復位遍歷 while更好用 include stdio.h include string.h define n 10 待編碼字元的個數,即樹中葉結點的最大個數 d...
哈夫曼(Huffman)編碼與解碼
利用哈夫曼編碼進行資訊通訊可以大大提高通道利用率,縮短資訊傳輸時間,降低傳輸成本。但是,這要求在傳送端通過乙個編碼系統對待傳輸資料預先編碼,在接收端將傳來的資料進行解碼。對於雙工通道,每端都需要乙個完整的編碼 解碼系統。試為這樣的資訊收發站寫乙個哈夫曼的編 解碼系統。乙個完整的系統具有以下幾種操作 ...