数据结构(5)_文件压缩.doc

数据结构(5)_文件压缩.doc

ID:49465615

大小:332.50 KB

页数:15页

时间:2020-03-01

数据结构(5)_文件压缩.doc_第1页
数据结构(5)_文件压缩.doc_第2页
数据结构(5)_文件压缩.doc_第3页
数据结构(5)_文件压缩.doc_第4页
数据结构(5)_文件压缩.doc_第5页
资源描述:

《数据结构(5)_文件压缩.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构实验报告实验名称:文件压缩实验类型:综合性试验班级:20112111学号:2011211107姓名:冯若航实验日期:2003.6.19下午4:001.问题描述文件压缩①基本要求哈夫曼编码是一种常用的数据压缩技术,对数据文件进行哈夫曼编码可大大缩短文件的传输长度,提高信道利用率及传输效率。要求采用哈夫曼编码原理,统计文本文件中字符出现的词频,以词频作为权值,对文件进行哈夫曼编码以达到压缩文件的目的,再用哈夫曼编码进行译码解压缩。l统计待压缩的文本文件中各字符的词频,以词频为权值建立哈夫曼树,并将该哈夫曼树保存到文件HufTree.dat中。l根

2、据哈夫曼树(保存在HufTree.dat中)对每个字符进行哈夫曼编码,并将字符编码保存到HufCode.txt文件中。l压缩:根据哈夫曼编码,将源文件进行编码得到压缩文件CodeFile.dat。l解压:将CodeFile.dat文件利用哈夫曼树译码解压,恢复为源文件。2.数据结构设计此类问题,应设计文件的数据结构。*4压缩头标记*1文件名长度*ns文件名*4源文件长度*1020huffman树*1021~EOF文件内容赫夫曼树节点的数据结构typedefstructnode{longw;//权shortp,l,r;//父亲,左孩子,右孩子}HTNO

3、DE,*HTNP;//霍夫曼树的结点精选范本,供参考!赫夫曼编码数组元素的数据结构设计typedefstructhuffman_code{BYTElen;//长度BYTE*codestr;//字符串}HFCODE;//霍夫曼编码数组元素3.算法设计源代码#define_CRT_SECURE_NO_DEPRECATE#include#include#includetypedefunsignedintUINT;typedefunsignedcharBYTE;typedefstructnode{lo

4、ngw;//权shortp,l,r;//父亲,左孩子,右孩子}HTNODE,*HTNP;//霍夫曼树的结点typedefstructhuffman_code{BYTElen;//长度BYTE*codestr;//字符串}HFCODE;//霍夫曼编码数组元素#defineOK1#defineERROR-1#defineUNUSE-1//未链接节点标志#defineCHAR_BITS8//一个字符中的位数#defineINT_BITS32//一个整型中的位数#defineHUFCODE_SIZE256//霍夫曼编码个数#defineBUFFERSIZE2

5、56//缓冲区大小大小#defineUINTSIZEsizeof(UINT)#defineBYTESIZEsizeof(BYTE)#defineTAG_ZIGHEAD0xFFFFFFFF//压缩文件头标#defineMAX_FILENAME512//函数声明//压缩模块intCompress(char*SourceFilename,char*DestinationFilename);//压缩调用intInitializing(char*SourceFilename,FILE**inp,char*DestinationFilename,FILE**ou

6、tp);//初始化文件工作环境longAnalysisFiles(FILE*in,long精选范本,供参考!frequency[]);//计算每个不同字节的频率以及所有的字节数intCreateHuffmanTree(longw[],intn,HTNODEht[]);//生成霍夫曼树intHuffmanTreeCoding(HTNPhtp,intn,HFCODEhc[]);//霍夫曼编码intSearch(HTNPht,intn);//查找当前最小权值的霍夫曼树节点并置为占用BYTEChar2Bit(constBYTEchars[CHAR_BITS]

7、);//将一个字符数组转换成二进制数字intSearch(HTNPht,intn);//查找当前最小权值的霍夫曼树节点并置为占用intWriteZipFiles(FILE*in,FILE*out,HTNPht,HFCODEhc[],char*SourceFilename,longsource_filesize);//写压缩文件//解压缩模块intDeCompress(char*SourceFilename,char*DestinationFilename);//解压缩调用intInitializing_Dezip(char*SourceFilenam

8、e,FILE**inp,char*DestinationFilename,FILE**outp);//为处理

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。