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

資源簡介

基于Huffman編碼樹原理實現的壓縮和解壓縮小程序,編碼單位為一字節。

資源截圖

代碼片段和文件信息

#include?“HuffmanEncoderCompress.h“

#include?
#include?
#include?
using?namespace?std;


HuffmanEncoderCompress::HuffmanEncoderCompress(const?string&?inputFileName?bool?isCompress):
_isCompress(isCompress)
_inputFileName(inputFileName)?_outputFileName(inputFileName+“.zLzip“)?
_inputFileSize(0)?_outputFileSize(0)?_huffmanTreeRoot(nullptr)
{
for?(int?i?=?0;?i?}


//?釋放節點及其子樹?
HuffmanEncoderCompress::freeNode(HuffmanTreeNode*?np)?{
if?(np)?{
freeNode(np->left);
freeNode(np->right);
delete?np;?
}
}?


//?析構?
HuffmanEncoderCompress::~HuffmanEncoderCompress()?{
freeNode(_huffmanTreeRoot);?
}


//?運行?
void?HuffmanEncoderCompress::run()?{

FILE?*inputFp?=?NULL;
if?((inputFp?=?fopen(_inputFileName.c_str()?“rb“))?==?NULL)?{
printf(“open?file?%s?failed!\n“?_inputFileName.c_str());
exit(-1);
}

char?zipName[_ZIP_NAME_LEN];
fread(zipName?_ZIP_NAME_LEN?1?inputFp);

if?(_isCompress?||?strcmp(zipName?_ZIP_NAME))?{ //?無識別符,非壓縮文件?

fclose(inputFp);?
printf(“開始壓縮文件%s......\n“?_inputFileName.c_str());?
printf(“正在統計頻率......\n“);
statisticalFrequency(); //?統計頻率?
printf(“正在構建哈夫曼樹......\n“);
_huffmanTreeRoot?=?buildHuffmanTree(); //??構建哈夫曼樹?
printf(“正在產生新編碼......\n“);
getNewCodes(_huffmanTreeRoot?0?string()?0); //?獲得新編碼?
// printHuffmanEncodeInfo();
printf(“正在壓縮......\n“);
compress(); //?壓縮?
printInfo(“壓縮“);?
printf(“壓縮成功\n“);

}?else?{ //?有識別符,是壓縮文件?

printf(“開始解壓縮文件%s......\n“?_inputFileName.c_str());
printf(“讀取原始文件信息......\n“);?
char?outputFileName[_FILE_NAME_LEN];
fread(outputFileName?_FILE_NAME_LEN?1?inputFp); //?讀入原文件名?
printf(“原始文件名為%s\n“?outputFileName);?
_outputFileName?=?string(outputFileName);?
fread(&_outputFileSize?_FILE_NAME_LEN?1?inputFp);? //?讀入原文件大小

for?(int?i?=?0;?i? fread(&_codes[i].frequency?_CODE_FREQUENCY_LEN?1?inputFp);

fclose(inputFp);

printf(“正在構建哈夫曼樹......\n“);
_huffmanTreeRoot?=?buildHuffmanTree(); //??構建哈夫曼樹?
printf(“正在產生新編碼......\n“);
getNewCodes(_huffmanTreeRoot?0?string()?0); //?獲得新編碼
// printHuffmanEncodeInfo();
printf(“正在解壓縮......\n“);
uncompress(); //?解壓縮?
printInfo(“解壓縮“);
printf(“解壓成功\n“);
}?
}

//?統計頻率?
void?HuffmanEncoderCompress::statisticalFrequency()?{
//?打開文件?
FILE?*inputFp?=?NULL;
if?((inputFp?=?fopen(_inputFileName.c_str()?“rb“))?==?NULL)?{
printf(“open?file?%s?failed!\n“?_inputFileName.c_str());
exit(-1);
}
//?統計頻率?
while?(!feof(inputFp))?{
unsigned?char?inputByte;
fread(&inputByte?1?1?inputFp);
if?(feof(inputFp))?break;
++_codes[inputByte].frequency;
++_inputFileSize;
}
fclose(inputFp);
}


//?構建?Huffman?樹?
HuffmanTreeNode*?HuffmanEncoderCompress::buildHuffmanTree()?{
//?使用優先隊列,自定義比較器?
priority_queue?C

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3490??2019-04-18?08:33??HuffmanEncoder\bak.txt

?????文件???????1186??2019-04-18?17:46??HuffmanEncoder\HuffmanEncoder.dev

?????文件????1860325??2019-04-20?09:08??HuffmanEncoder\HuffmanEncoder.exe

?????文件????????224??2019-04-18?18:00??HuffmanEncoder\HuffmanEncoder.layout

?????文件?????281615??2019-04-18?08:54??HuffmanEncoder\HuffmanEncoder.o

?????文件???????4639??2019-04-19?21:44??HuffmanEncoder\HuffmanEncoder.rar

?????文件??????11386??2019-04-20?09:08??HuffmanEncoder\HuffmanEncoderCompress.cpp

?????文件???????3084??2019-04-20?09:08??HuffmanEncoder\HuffmanEncoderCompress.h

?????文件?????315671??2019-04-20?09:08??HuffmanEncoder\HuffmanEncoderCompress.o

?????文件????????833??2019-04-20?09:08??HuffmanEncoder\main.cpp

?????文件??????90381??2019-04-20?09:08??HuffmanEncoder\main.o

?????文件???????1423??2019-04-20?09:08??HuffmanEncoder\Makefile.win

?????文件?????????12??2019-04-18?20:28??HuffmanEncoder\out.txt

?????文件????2248393??2019-04-19?20:26??HuffmanEncoder\test\input.exe

?????文件????1251824??2019-04-19?08:19??HuffmanEncoder\test\pdfzhuanhuan2.exe

?????文件????4204022??2019-04-19?21:49??HuffmanEncoder\test\pic.png

?????文件????2248950??2019-04-19?20:27??HuffmanEncoder\test\zLzip壓縮.exe

?????目錄??????????0??2019-04-20?09:23??HuffmanEncoder\test

?????目錄??????????0??2019-04-20?09:08??HuffmanEncoder

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

?????????????12527458????????????????????19


評論

共有 條評論