資源簡介
采用哈夫曼編碼思想實現文件的壓縮和恢復功能,并提供壓縮前后的占用空間之比。
要求:
(1)描述壓縮基本符號的選擇方法。
(2)運行時的壓縮原文件的規模不小于5K。
(3)提供恢復文件與原文件的相同性對比功能。
代碼片段和文件信息
#include?
#include?
#include?
using?namespace?std;
const?int?leaf?=?256; //最多可能出現的不同字符數
const?long?MAX?=?99999999; //表示無窮大
struct?HTnode{ //huffman樹的結點結構體
long?weight; //記錄結點的權值
int?parent; //記錄結點的雙親結點位置
int?lchild; //結點的左孩子
int?rchild; //結點的右孩子
int?*code; //記錄該結點的huffman編碼
int?codelen; //記錄該結點huffman編碼的長度
//初始化結點,令其權值為無窮大,無雙親及左右孩子
HTnode(){
weight?=?MAX;
parent?=?-1;
lchild?=?-1;
rchild?=?-1;
codelen?=?0;
}
};
class?huffman{ //huffman樹類
private:
int?root; //記錄根結點的位置
int?leafnum; //記錄不同字符的個數
HTnode?HT[leaf*2-1]; //HTnode結構的數組,用來表示huffman樹,樹的最大結點個數不會超過leaf*2-1
char?byte; //壓縮文件時用來緩沖bit的變量
int?bitsnum; //byte中bit的個數
int?lacknum; //壓縮到最后byte中的bit不滿8個時填充的0的
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????9638??2009-06-29?16:00??huffman.cpp
-----------?---------??----------?-----??----
?????????????????9638????????????????????1
- 上一篇:NOIP 字符串復習
- 下一篇:游戲設計參考文檔-游戲策劃專用
評論
共有 條評論