91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

這是武漢理工大學(xué)計算機學(xué)院數(shù)據(jù)結(jié)構(gòu)與算法綜合實驗課程的第一次實驗:二叉樹與赫夫曼圖片壓縮實踐的源代碼。運行環(huán)境:VS2017。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?“Compress.h“
#include“Huffman.h“

using?namespace?std;

#define?OK?1
#define?ERROR?0

const?int?SIZE?=?256;

//掃描文件和初始化頭文件的信息
int?InitHead(const?char?*?pFilname?HEAD?&?sHead)
{
strcpy(sHead.type?“HUF“); //文件類型
sHead.length?=?0; //源文件長度
for?(int?i?=?0;?i? {
sHead.weight[i]?=?0; //權(quán)值
}

//以二進制流形式打開文件
FILE?*in?=?fopen(pFilname?“rb“);


//掃描文件,獲得權(quán)重
int?ch;
while?((ch?=?fgetc(in))?!=?EOF)
{
sHead.weight[ch]++;
sHead.length++;
}

//關(guān)閉文件
fclose(in);
in?=?NULL;
return?OK;
}

//得到編碼文件
int?Compress(const?char?*?pFilename)
{
/**************************************************/
//打開并掃描文件
cout?< int?weight[256]?=?{?0?};??//打開文件,獲取權(quán)重
FILE*?in?=?fopen(pFilename?“rb“);
int?tempch;
while?((tempch?=?getc(in))?!=?EOF)
{
weight[tempch]++;
}
//測試掃描結(jié)果:顯示256種字節(jié)出現(xiàn)的次數(shù)
//if?(TestWeight(weight))
// cout?<
cout?< fclose(in);

/**************************************************/
//將編碼生成Huffman樹
int?i;
int?n?=?256; //Huffman樹共有n個葉子節(jié)點
int?m?=?2?*?n?-?1; //那么就有2n+1個節(jié)點

HuffmanTree?pHT?=?new?HTNode[m?+?1]; //定義Huffman樹
CreateHuffmanTree(pHTweightn);

// cout?<// if?(TestHufTree(pHT))
// cout?<
//生成Huffman編碼
char**?pHC?=?new?char*[n?+?1];?//編碼
for?(int?i?=?1;?i?<=?n;?i++)
pHT[i].weight?=?weight[i?-?1];

// cout?< //測試生成的Huffman樹
// if?(TestHufTree(pHT))
// cout?<

HuffmanCoding(pHC?pHT);

/**************************************************/


//計算編碼緩沖區(qū)大小
int?nSize?=?0;
for?(int?i?=?0;?i? nSize?+=?weight[i]?*?strlen(pHC[i?+?1]);
nSize?=?(nSize?%?8)???nSize?/?8?+?1?:?nSize?/?8;


//對編碼文件進行壓縮
char?*pBuffer?=?NULL;
pBuffer?=?new?char[nSize];
memset(pBuffer?0?(nSize)?*?sizeof(char));
Encode(pFilename?pHC?pBuffer?nSize);
if?(!pBuffer)?{
return?ERROR;
}

HEAD?sHead;
InitHead(pFilename?sHead);
cout?< int?afterlen?=?WriteFile(pFilename?sHead?pBuffer?nSize);
cout?< cout?<
delete?pHT;?delete[]?pHC;?delete?pBuffer;

return?OK;
}

//實現(xiàn)壓縮編碼
int?Encode(const?char?*?pFilname?const?HuffmanCode?pHC?char?*?pBuffer?const?int?nSize)
{
//打開文件
FILE?*in?=?fopen(pFilname?“rb“);

//開辟緩沖區(qū)ni
pBuffer?=?(char?*)malloc(nSize?*?sizeof(char));
if?(!pBuffer)
{
cout?< }

char?cd[SIZE]?=?{?0?}; //工作區(qū)
int?pos?=?0; //緩沖區(qū)指針
int?ch;
//掃描文件
while?((ch?=?fgetc(in))?!=?EOF)
{
strcat(cd?pHC[ch?+?1]);

//壓縮編碼
while?(strlen(cd)?>=?8)
{
pBuffer[pos++]?=?Str2byte(cd);
for?(int?i?=?0;?i

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-05-08?20:41??HfmCompressCPro\
?????目錄???????????0??2018-05-08?20:41??HfmCompressCPro\.vs\
?????目錄???????????0??2018-05-08?20:41??HfmCompressCPro\.vs\HfmCompressCPro\
?????目錄???????????0??2018-05-08?20:44??HfmCompressCPro\.vs\HfmCompressCPro\v15\
?????文件???????54784??2018-05-08?20:44??HfmCompressCPro\.vs\HfmCompressCPro\v15\.suo
?????文件?????5242880??2018-05-08?20:44??HfmCompressCPro\.vs\HfmCompressCPro\v15\Browse.VC.db
?????目錄???????????0??2018-05-08?20:41??HfmCompressCPro\.vs\HfmCompressCPro\v15\ipch\
?????文件????25755648??2018-05-02?18:10??HfmCompressCPro\.vs\HfmCompressCPro\v15\ipch\54987a9fdebad512.ipch
?????目錄???????????0??2018-05-08?20:42??HfmCompressCPro\.vs\HfmCompressCPro\v15\ipch\AutoPCH\
?????目錄???????????0??2018-05-08?20:41??HfmCompressCPro\.vs\HfmCompressCPro\v15\ipch\AutoPCH\134c91a43b40e1b5\
?????文件????26148864??2018-05-08?20:39??HfmCompressCPro\.vs\HfmCompressCPro\v15\ipch\AutoPCH\134c91a43b40e1b5\COMPRESS.ipch
?????目錄???????????0??2018-05-08?20:41??HfmCompressCPro\.vs\HfmCompressCPro\v15\ipch\AutoPCH\53b7047aad3a8af8\
?????文件????26476544??2018-05-08?20:39??HfmCompressCPro\.vs\HfmCompressCPro\v15\ipch\AutoPCH\53b7047aad3a8af8\MAIN.ipch
?????目錄???????????0??2018-05-08?20:42??HfmCompressCPro\.vs\HfmCompressCPro\v15\ipch\AutoPCH\84b2b339d31b66c8\
?????文件????26476544??2018-05-08?20:43??HfmCompressCPro\.vs\HfmCompressCPro\v15\ipch\AutoPCH\84b2b339d31b66c8\MAIN.ipch
?????目錄???????????0??2018-05-08?20:41??HfmCompressCPro\.vs\HfmCompressCPro\v15\ipch\AutoPCH\fd150ae0430a3a5c\
?????文件????26148864??2018-05-08?20:30??HfmCompressCPro\.vs\HfmCompressCPro\v15\ipch\AutoPCH\fd150ae0430a3a5c\HUFFMAN.ipch
?????文件????26345472??2018-05-07?18:09??HfmCompressCPro\.vs\HfmCompressCPro\v15\ipch\dcdbf1051398cea6.ipch
?????目錄???????????0??2018-05-08?20:42??HfmCompressCPro\Debug\
?????文件???????75776??2018-05-08?20:42??HfmCompressCPro\Debug\HfmCompressCPro.exe
?????文件??????492148??2018-05-08?20:42??HfmCompressCPro\Debug\HfmCompressCPro.ilk
?????文件??????610304??2018-05-08?20:42??HfmCompressCPro\Debug\HfmCompressCPro.pdb
?????目錄???????????0??2018-05-08?20:41??HfmCompressCPro\HfmCompressCPro\
?????文件????????4456??2018-05-08?20:36??HfmCompressCPro\HfmCompressCPro\Compress.cpp
?????文件?????????716??2018-05-08?17:11??HfmCompressCPro\HfmCompressCPro\Compress.h
?????目錄???????????0??2018-05-08?20:42??HfmCompressCPro\HfmCompressCPro\Debug\
?????文件???????61612??2018-05-08?20:42??HfmCompressCPro\HfmCompressCPro\Debug\Compress.obj
?????文件?????????455??2018-05-08?20:42??HfmCompressCPro\HfmCompressCPro\Debug\HfmCompressCPro.log
?????目錄???????????0??2018-05-08?20:42??HfmCompressCPro\HfmCompressCPro\Debug\HfmCompressCPro.tlog\
?????文件????????2766??2018-05-08?20:42??HfmCompressCPro\HfmCompressCPro\Debug\HfmCompressCPro.tlog\CL.command.1.tlog
?????文件???????54354??2018-05-08?20:42??HfmCompressCPro\HfmCompressCPro\Debug\HfmCompressCPro.tlog\CL.read.1.tlog
............此處省略19個文件信息

評論

共有 條評論

相關(guān)資源