freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于哈夫曼樹的文件壓縮解壓程序-示例文檔-資料下載頁

2024-11-16 19:59本頁面

【導(dǎo)讀】計(jì)算機(jī)科學(xué)學(xué)院&#215;&#215;專業(yè)&#215;&#215;班&#215;&#215;號(hào)&#215;&#215;&#215;為dos系統(tǒng)應(yīng)用程序,體積小,高效快捷,適用范圍廣。為windows應(yīng)用程序,界面友好,使用方便。&hfmCode,vector<int>&lchild,vector<int>&rchild)哈夫曼樹編碼遞歸函數(shù)。式,對(duì)應(yīng)字節(jié)碼為0-255。按此256種字節(jié)出現(xiàn)頻率可構(gòu)造haffman樹進(jìn)行。壓縮編碼寫到新文件中,從而達(dá)到壓縮文件的目的。子為b號(hào)節(jié)點(diǎn),不妨用數(shù)組記錄:left[256]=a,right[256]=b。由此,每做一次,新生成一個(gè)節(jié)點(diǎn),刪除兩個(gè)節(jié)點(diǎn),即減少一個(gè)節(jié)點(diǎn)。因而在做255次后,最后的第510號(hào)節(jié)點(diǎn)即為haffman樹的根節(jié)點(diǎn)。由left[]與right[]數(shù)組,該haffman樹得到確定。以二叉排序樹形式存儲(chǔ)元素1,有效地解決了這個(gè)問題。0的節(jié)點(diǎn)加入到哈夫曼數(shù)中,因?yàn)樗鼈冊(cè)谖募袥]有出現(xiàn),無須重新編碼。編碼100,C為101,D為11。所有葉子的編碼實(shí)際上是一個(gè)二維數(shù)組,空間消耗比較大。數(shù)來表示編碼長(zhǎng)度,例如code[B].Length=3,第二個(gè)數(shù)表示編碼的十進(jìn)制值,這樣極大地節(jié)省了空間。

  

【正文】 if (CompressedByte/double(inputFileByte)*100=step) { ProgressBar1StepIt()。 StatusBar1PanelsItems[0]Text=已完成 +AnsiString(step)+%。 StatusBar1PanelsItems[1]Text=AnsiString(CompressedByte)+字節(jié) 。 Form1Update()。 step++。 } } ProgressBar1Position=100。 (wantFileBuffer,wantFileBufferSize)。 //寫入內(nèi)層緩沖區(qū)殘余的 bit if (buffersize) (buffer24)。 ()。 ()。 Label3Caption=內(nèi)容長(zhǎng)度為 +AnsiString(wantFileContentByte)+byte。 Label4Caption=壓縮后文件長(zhǎng)度為 +AnsiString(wantFileByte)+byte。 Edit13Text=ShowNowTime()。 Label25FontColor=clOlive。 21 Label26FontColor=clNavy。 StatusBar1PanelsItems[0]Text=已完成 100%。 StatusBar1PanelsItems[1]Text=AnsiString(inputFileByte)+字節(jié) 。 Label1Caption=ok。 } // void __fastcall TForm1::UnCompress(TObject *Sender) { Edit7Text=。 Edit14Text=。 Label7FontColor=clOlive。 Label8FontColor=clOlive。 Label18Caption=。 StatusBar2PanelsItems[0]Text=。 StatusBar2PanelsItems[1]Text=。 StatusBar2PanelsItems[2]Text=。 if (!FileExists(Edit2Text)) { ShowMessage(Edit2Text+ 文件不存在 !)。 return。 } Label7FontColor=clNavy。 Edit7Text=ShowNowTime()。 Form1Update()。 ifstream fin。 ofstream fout。 int wantFileByte=0。 vector int lchild(512,1)。 vector int rchild(512,1)。 (Edit2(),ios::binary)。 (Edit3(),ios::binary)。 for (int i=1。i=4。i++) { int t=()。 if (t0) t=256+t。 wantFileByte=wantFileByte*256+t。 } StatusBar2PanelsItems[0]Text=原文件長(zhǎng) +AnsiString(wantFileByte)+字節(jié) 。 //讀入索引 int newNodeCode=256。 int leaf=()。 if (leaf0) leaf+=256。 leaf+=2。 listintcode。 for(int i=0。ileaf。i++) { int t=()。 if (t0) t+=256。 (t)。 } int indexSize=leaf*21。 int indexByteSize。 if(indexSize%8) indexByteSize=indexSize/8+1。 else indexByteSize=indexSize/8。 vectorint index。 22 for(int i=1。i=indexByteSize。i++) { int t=()。 if (t0) t+=256。 for(int j=1。j=8。j++) { if(tamp。128) (1)。 else (0)。 if(()==indexSize) goto end1。 t=t1。 } } end1:。 int indexNum=1。 int nodeCode=256。 int tt=257。 makeIndex(nodeCode,tt,index,indexNum,code,lchild,rchild)。 int step=1。 int haveByte=0。 int searchNumber=newNodeCode。 int wantFileBufferSize=0。 while(1) { (inputFileBuffer,1048576)。 if (()) break。 for(int i=0。i1048576。i++) { int buffer=inputFileBuffer[i]。 int buffersize=8。 while(buffersize) { if (bufferamp。128) searchNumber=rchild[searchNumber]。 else searchNumber=lchild[searchNumber]。 if (searchNumber256) { wantFileBuffer[wantFileBufferSize++]=searchNumber。 if (wantFileBufferSize==1048576) { (wantFileBuffer,1048576)。 wantFileBufferSize=0。 } haveByte++。 if (haveByte/double(wantFileByte)*100=step) { StatusBar2PanelsItems[1]Text=已解壓 +AnsiString(step)+%。 StatusBar2PanelsItems[2]Text=AnsiString(haveByte)+字節(jié) 。 Form1Update()。 ProgressBar2StepIt()。 step++。 } if (haveByte==wantFileByte) goto end。 searchNumber=newNodeCode。 } buffer=buffer1。 buffersize=1。 } } 23 } for(int i=0。i()。i++) { int buffer=inputFileBuffer[i]。 int buffersize=8。 while(buffersize) { if (bufferamp。128) searchNumber=rchild[searchNumber]。 else searchNumber=lchild[searchNumber]。 if (searchNumber256) { wantFileBuffer[wantFileBufferSize++]=searchNumber。 if (wantFileBufferSize==1048576) { (wantFileBuffer,1048576)。 wantFileBufferSize=0。 } haveByte++。 if (haveByte/double(wantFileByte)*100=step) { StatusBar2PanelsItems[1]Text=已解壓 +AnsiString(step)+%。 StatusBar2PanelsItems[2]Text=AnsiString(haveByte)+字節(jié) 。 Form1Update()。 ProgressBar2StepIt()。 step++。 } if (haveByte==wantFileByte) goto end。 searchNumber=newNodeCode。 } buffer=buffer1。 buffersize=1。 } } end: StatusBar2PanelsItems[1]Text=已解壓 100%。 StatusBar2PanelsItems[2]Text=AnsiString(haveByte)+字節(jié) 。 ProgressBar2Position=100。 (wantFileBuffer,wantFileBufferSize)。 ()。 ()。 Label7FontColor=clOlive。 Label8FontColor=clNavy。 Edit14Text=ShowNowTime()。 Form1Update()。 Labe
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1