xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡介

哈夫曼編碼(壓縮文件),c/c++課程設(shè)計(jì),附帶程序運(yùn)行用例以及講解答辯PPT,程序清晰易懂

資源截圖

代碼片段和文件信息

#include??
?#include
#define?ASCIIL?256??
#define?F(x)?((x-1)>>1)???
#define?L(x)?((x<<1)+1)??
#define?R(x)?((x<<1)+2)??
#define?SWAP(abtmp)?{tmp=a;a=b;b=tmp;}??
??
using?namespace?std;??
??
//實(shí)現(xiàn)二叉堆模板類,小頂堆??
template???
class?CHeap??
{??
????HeapType?*datatmp;??
????int?size;??
??????
????void?HeapUp(int?ix)??
????{//自底向頂維護(hù)堆??
????????int?f;??
????????for(f=F(ix);ix&&data[ix]????????????SWAP(data[ix]data[f]tmp);??
????}??
??????
????void?HeapDown(int?ix)??
????{//自頂向底維護(hù)堆??
????????int?lrt;??
????????HeapType?mintmp;??
????????if(ix>=size)?return?;??
????????l=L(ix)r=R(ix);??
??????????
????????min=data[ix]t=ix;??
??????????
????????if(l????????????t=lmin=data[l];??
????????if(r????????????t=rmin=data[l];??
??????????
????????SWAP(data[ix]data[t]tmp);??
????????if(ix!=t)?HeapDown(t);??
????}??
??????
public:??
????CHeap()??
????{//這里特殊應(yīng)用,堆內(nèi)元素個(gè)數(shù)不超過256??
????????size=0;??
????????data=new?HeapType[256];??
????}??
????~CHeap()??
????{//釋放內(nèi)存??
????????delete?[]?data;??
??
????}??
????int?getsize()??
????{//返回堆大小??
????????return?size;??
????}??
????void?clear()??
????{//清空堆??
????????size=0;??
????}??
????void?insert(HeapType?e)??
????{//向堆尾中插入元素,并向頂維護(hù)堆??
????????data[size++]=e;??
????????HeapUp(size-1);??
????}??
????HeapType?top()??
????{//從堆頂取出元素,并向底維護(hù)堆??
????????HeapType?ret=data[0];??
????????data[0]=data[--size];??
????????HeapDown(0);return?ret;??
????}??
};??
??
//哈夫曼樹結(jié)點(diǎn)結(jié)構(gòu)體實(shí)現(xiàn)??
typedef?struct?talNode{??
??????
????unsigned?char?c;????//葉結(jié)點(diǎn)時(shí)對(duì)應(yīng)ASCII值??
????int?weight;?????????//該結(jié)點(diǎn)權(quán)值??
????int?ltrt;??????????//左、右結(jié)點(diǎn)下標(biāo)??
??????
????talNode(){}??
??????
????talNode(unsigned?char?_cint?_p):??
????c(_c)weight(_p)lt(-1)rt(-1)??
????{}??
??????
????talNode(unsigned?char?_cint?_pint?lint?r)??
????????:c(_c)weight(_p)lt(l)rt(r)??
????{}??
??????
????bool?operator?????{//重載運(yùn)算符“<”用于二叉堆內(nèi)的比較??
????????return?weight????}??
??????
}HuffNode;??
??
??
??
class?CHuffMan{??
????HuffNode?arr[512];??????//哈夫曼樹結(jié)點(diǎn)數(shù)組??
????int?size;???????????????//哈夫曼樹結(jié)點(diǎn)個(gè)數(shù)??
????bool?code[256][64];?????//ASCII對(duì)應(yīng)編碼方案??
????int?lenth[256];?????????//ASCII對(duì)應(yīng)編碼長度??
??
????//lastcodelenthps[256]用于存儲(chǔ)壓縮文件中作為文件頭??
????int?lastcodelenth;??????//文件最后一個(gè)字符實(shí)用幾位??
????int?ps[256];????????????//ASCII對(duì)應(yīng)出現(xiàn)頻率??
????int?soucelentargetlen;?//源及目標(biāo)文件長度??
??
??
????//私有成員函數(shù),用于實(shí)現(xiàn)內(nèi)部功能??
????void?SetHuffTree(int?[]);???????????//根據(jù)字符頻率生成哈夫曼樹??
????void?SetHuffCode(int?bool?[]int?);//根據(jù)哈夫曼樹生成編碼方案??
????void?CreateHuff(int?[]);????????????//創(chuàng)建哈夫曼樹及編碼方案??
????void?EnCodePre(char?[]);????????????//壓縮前預(yù)處理??
????void?DeCodePre(FILE?*);?????????????//解壓前預(yù)處理??
????void?SaveHuffHead(FILE?*);??????????//保存壓縮文件頭??
????void?ReadHuffHead(FILE?*);??????????//讀取壓縮文件頭??
??
public:??
????CHuffMan(){Clear();}????????????????//構(gòu)造函數(shù)??
????~CHuffMan

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????4546??2018-05-23?10:36??哈夫曼\1234.txt

?????文件???????3490??2018-05-29?20:55??哈夫曼\2345.huf

?????文件???????4546??2018-05-29?21:05??哈夫曼\3456.txt

?????文件?????905247??2018-05-23?11:25??哈夫曼\信息化教學(xué)設(shè)計(jì)ppt模板(2)(1).pptx

?????文件??????14451??2018-05-23?10:26??哈夫曼\壓縮文件(哈夫曼樹).cpp

?????文件????1943033??2018-05-29?20:53??哈夫曼\壓縮文件(哈夫曼樹).exe

?????目錄??????????0??2020-01-28?18:01??哈夫曼

-----------?---------??----------?-----??----

??????????????2875313????????????????????7


評(píng)論

共有 條評(píng)論

相關(guān)資源