資料結構 HuffmanTree

2021-08-30 11:38:22 字數 2188 閱讀 6630

1.掌握二叉樹的定義;

2.掌握哈夫曼樹和哈夫曼編碼演算法的實現。

實現乙個哈夫曼編碼系統,系統包括以下功能:

(1) 字元資訊統計:讀取待編碼的原始檔sourcefile.txt,統計出現的字元及其頻率。

(2) 建立哈夫曼樹:根據統計結果建立哈夫曼樹。

(3) 建立哈夫曼碼表:利用得到的哈夫曼樹,將各字元對應的編碼表儲存在檔案code.txt中。

(4) 對原始檔進行編碼:根據哈夫曼碼表,將sourcefile.txt中的字元轉換成相應的編碼檔案resultfile.txt。

隨機樣例生成器:

#include

using namespace std;

intrandom

(int start,

int end)

intmain()

fprintf

(fp ,

"\n");

}fclose

(fp)

;return0;

}

huffmantree code :

#include

using namespace std;

const

int maxn =

1e5+50;

typedef

char

**huffmancode;

typedef

struct node

htnode ,

*huffmantree ;

int weight[maxn]

;char str[maxn]

;map<

char

,int

>mp ;

map<

int,

char

>mmp;

void

select

(huffmantree ht ,

int pos ,

int&s1 ,

int&s2 )

} ht[s1]

.parent =1;

for(

int i =

1; i <= pos ; i ++)}

}void

creathuffmantree

(huffmantree &ht ,

int n )

for(

int i =

1; i <= n ; i ++

)int s1 ,s2 ;

for(

int i = n +

1; i <= m ; i ++)}

void

creathuffmancode

(huffmantree ht ,huffmancode &hc ,

int n )

hc[i]

= new char

[n - start]

;strcpy

(hc[i]

,&cd[start]);

} delete cd;

}int

main()

weight[cnt]++;

} huffmantree ht; huffmancode hc ;

creathuffmantree

(ht ,cnt )

;// for (int i = 1 ; i <= cnt * 2 - 1 ; i ++ )

creathuffmancode

(ht ,hc ,cnt )

; filestream =

fopen

("resultfile.txt"

,"a");

fprintf

(filestream ,

"第%d組樣例結果\n"

,k )

;for

(int i =

1; i <= cnt ; i ++

)fprintf

(filestream ,

"\n");

}fprintf

(filestream ,

"第%d組樣例結束\n"

,k );}

fclose

(filestream)

;fclose

(fp)

;return0;

}

資料結構 HuffmanTree

1 掌握二叉樹的定義 2 掌握哈夫曼樹和哈夫曼編碼演算法的實現。實現乙個哈夫曼編碼系統,系統包括以下功能 1 字元資訊統計 讀取待編碼的原始檔sourcefile.txt,統計出現的字元及其頻率。2 建立哈夫曼樹 根據統計結果建立哈夫曼樹。3 建立哈夫曼碼表 利用得到的哈夫曼樹,將各字元對應的編碼表...

溫習 資料結構之HuffmanTree

一定要親自試了,才會印象深刻呢!huffmantree include include include define unit max 10000 typedef struct htnode,huffmantree 動態分配陣列儲存huffmantree typedef char huffmanco...

資料結構 資料結構緒論

資料結構是相互間存在一種或多種特定關係的資料元素的集合。程式設計 資料結構 演算法 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。資料元素是組成資料的 有一定意義的基本單位,是計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以由若干個資料項組...