資源簡介
壓縮
(1)統(tǒng)計(jì)原始文件中各字節(jié)出現(xiàn)的概率(次數(shù));
(2)采用哈弗曼算法對各字節(jié)進(jìn)行編碼,建立哈弗曼對照表;
a)構(gòu)造二叉樹
b)編碼
(3)依次讀取原始文件的每個(gè)字節(jié),查找其對應(yīng)的哈弗曼編碼,將這些位寫入到壓縮文件中(注意:要湊夠8位二進(jìn)制才寫入到文件中)。
(4)將原始文件中各字節(jié)及出現(xiàn)的次數(shù)也寫入到壓縮文件中。
2、解壓
(1)從壓縮文件中獲得原始文件各字節(jié)及出現(xiàn)的次數(shù),并根據(jù)此構(gòu)造哈弗曼對照表;
(2)將壓縮文件中對應(yīng)原始文件數(shù)據(jù)的部分依據(jù)哈弗曼對照表還原成原來的字節(jié),寫入到解壓文件中。
代碼片段和文件信息
/*?Huffman?Code?*/??
#include???
#include???
#include???
#include???
#include???
#include???
#include?“Huffman.h“
int?main(void)??
{????
????FILE?*?fin?=?fopen(“2.in“?“r“);??
????int?c;
????while(?(c=fgetc(fin))?!=?EOF?)??
????{??
????????Asc[c].alpha?=?c;??
????????Asc[c].value++;??
????}??
????puts(““);??
????qsort(Asc?sizeof(Asc)/sizeof(Asc[0])?sizeof(Asc[0])?Compare);
????TreeNode?*?HuffmanRoot?=?CreateHuffmanTree(Asc);
????Pre(HuffmanRoot);??
????cout?<“Char\tTimes\tCode\n“;??
????for(int?i=0;?i ????{??
????????if(Asc[i].value?!=?0)??
????????{??
????????????cout?<(char)Asc[i].alpha?<“\t“?<????????}??
????}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-11-29?11:08??Huffman\
?????文件???????????2??2015-11-23?11:53??Huffman\1.bin
?????文件??????????12??2015-11-22?21:14??Huffman\2.in
?????文件???????????0??2015-11-29?11:08??Huffman\2.txt
?????文件??????????12??2015-11-23?11:53??Huffman\3.out
?????目錄???????????0??2015-11-23?11:53??Huffman\Debug\
?????文件??????553014??2015-11-23?11:53??Huffman\Debug\Huffman.exe
?????文件??????793916??2015-11-23?11:53??Huffman\Debug\Huffman.ilk
?????文件??????184804??2015-11-23?11:53??Huffman\Debug\Huffman.obj
?????文件?????2238976??2015-11-23?11:12??Huffman\Debug\Huffman.pch
?????文件?????1123328??2015-11-23?11:53??Huffman\Debug\Huffman.pdb
?????文件???????74752??2015-11-23?11:53??Huffman\Debug\vc60.idb
?????文件??????110592??2015-11-23?11:53??Huffman\Debug\vc60.pdb
?????文件????????1781??2015-11-23?11:53??Huffman\Huffman.cpp
?????文件????????4352??2015-11-23?11:30??Huffman\Huffman.dsp
?????文件?????????522??2015-11-22?21:17??Huffman\Huffman.dsw
?????文件????????3487??2015-11-23?11:53??Huffman\Huffman.h
?????文件???????50176??2015-11-29?09:20??Huffman\Huffman.ncb
?????文件???????53760??2015-11-29?09:20??Huffman\Huffman.opt
?????文件????????1274??2015-11-23?11:53??Huffman\Huffman.plg
評論
共有 條評論