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