c實現哈夫曼編譯碼系統

2021-09-19 04:38:24 字數 2228 閱讀 8997

1.問題描述:利用哈夫曼編碼進行通訊可以大大提高通道利用率,縮短資訊傳輸時間,降低傳輸成本。但是,這要求在傳送端通過乙個編碼系統對待傳資料預先編碼,在接收端將傳來的資料進行解碼(解碼)。對於雙工通道(即可以雙向傳輸資訊的通道),每端都需要乙個完整的編/解碼系統。試為這樣的資訊收發站設計乙個哈夫曼編譯碼系統。

2.基本要求

(1)初始化(initialzation)。從資料檔案datafile.data中讀入字元及每個字元的權值,建立哈夫曼樹hufftree;

(2)編碼(encoding)。用已建好的哈夫曼樹,對檔案tobetran.data中的文字進行編碼形成報文,將報文寫在檔案code.txt中;

(3)解碼(decoding)。利用已建好的哈夫曼樹,對檔案codefile.data中的**進行解碼形成原文,結果存入檔案textfile.txt中;

(4)輸出(output)。輸出datafile.data**現的字元以及各字元出現的頻度(或概率);輸出tobetran.data及其報文code.txt;輸出codefile.data及其原文textfile.txt;

#include#include#include#define charnum 26

typedef struct

dfilenode ;

typedef struct

htnode,*huffmantree;

huffmantree ht;

void creatdatafile()

fp=fopen("file.dat","wb");

for(i=1;i<=26;i++)

fclose(fp);

fp=fopen("file.dat","rb");

printf("字元及每個字元出現的次數\n");

while(fread(&s,1,sizeof(dfilenode),fp))

fclose(fp);

}int min(huffmantree t,int i) }

void print_huff_tree(huffmantree ht ,int n)

void inithtree(huffmantree &ht,int n)

fclose(f1);

printf("\n");

for(;i<=m;++i,++p)

for(i=n+1;i<=m;++i)

}void huffmancoding(huffmantree &ht,int n)

free(cd);

}void encoding()

fclose(f1);

fclose(f2);

}void decoding()

} fclose(f1);

fclose(f2);

}void creattobetran()

fclose(fp);

} void creatcodefile()

fclose(fp);

fp=fopen("codefile.dat","r");

while(fread(&s,1,sizeof(int),fp))

fclose(fp);

}void output_1()

void output_2()

int main()

printf("\n");

creattobetran();

encoding();

output_1();

creatcodefile();

printf("\n");

decoding();

output_2();

while(1)

printf("你還想幹啥?\n");

printf(" 1.編碼\n 2.解碼\n 3.退出");

scanf(" %d",&x);

switch(x)

case 2:

case 3:

default:} }

注:輸入模板碼來獲取權重。

哈夫曼編譯碼演算法(C實現)

記得在畢業前去找工作,應聘康佳集團移動應用工程師的筆試題出了這麼一道題。傳輸文字字元 badcadfeed 只能出現 abcdef 這六個字元,使用以下的編碼方式 如傳輸字元 badcadfeed 接收編碼 001000011010000011101100100011 接收方可以根據每3個bit進行...

哈夫曼樹以及編譯碼

這一篇要總結的是樹中的最後一種,即哈夫曼樹,我想從以下幾點對其進行總結 1,什麼是哈夫曼樹?2,如何構建哈夫曼樹?3,哈夫曼編碼?4,演算法實現?回到頂部 什麼是哈夫曼樹呢?哈夫曼樹是一種帶權路徑長度最短的二叉樹,也稱為最優二叉樹。下面用一幅圖來說明。它們的帶權路徑長度分別為 圖a wpl 5 2 ...

哈夫曼樹編 解碼演算法

一 實驗目的 掌握哈弗曼編 解碼演算法。1.掌握huffman 樹的概念 特點和儲存結構 2.掌握huffman 樹的構造方法 3.學會靈活運用huffman 樹解決編碼問題。4.問題描述 5.某報文中共出現n個字元,各字元出現頻度依次為w1,w2,wn。要求設計乙個不等長的編碼方案,輸出每個字元對...