欢迎来到天天文库
浏览记录
ID:1472219
大小:2.46 MB
页数:30页
时间:2017-11-11
《数据结构课程设计(哈夫曼编码)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据结构课程设计报告采用哈夫曼编码思想实现文件的压缩和恢复功能,并提供压缩前后的占用空间之比。要求:(1)压缩原文件的规模应不小于5K。(2)提供恢复文件与原文件的相同性对比功能。——哈夫曼编码班级:软件112班姓名:刘路峰指导教师:兰红成绩:信息工程学院2012年12月28日30目录1需求分析31.1主要任务31.2课题要求31.3主要功能31.4主要工作31.4.1压缩部分31.4.2解压部分32概要设计42.1抽象数据42.2头文件及宏、结构体定义52.3主程序流程62.4各程序模块层次关系73详细设计73.1模块实现73.
2、1.1主要模块(函数)73.2流程图124调试分析124.1遇到的问题124.1.1读取文件遇到值为-1的字符124.1.2文件读取问题导致程序停止工作134.2程序代码改进144.2.1FileExtract()函数改进144.3程序设计回顾154.4心得与体会155测试结果165.1英文文章测试165.2其他测试19参考文献22附录:源代码22301需求分析1.1主要任务实现文件的压缩和解压并计算压缩率1.2课题要求(1)压缩原文件的规模应不小于5K。(2)提供恢复文件与原文件的相同性对比功能。1.3主要功能(1)压缩:实现对
3、文件的压缩,生成一个比原文件还小的压缩文件。(2)解压:能够对已经压缩的这个文件进行解压,恢复原来的文件。1.4主要工作1.4.1压缩部分(1)读取文件,并统计文件中字符权值(个数);(2)建立Huffman树;(3)对文件进行Huffman编码;(4)读取源文件,对字符进行翻译;(5)翻译结果写入压缩文件。1.4.2解压部分(1)读取文件,获取各字符及字符权值(个数);(2)建立Huffman树;(3)对字符串编码进行解码;(4)解码结果写入解压文件。302概要设计2.1抽象数据抽象数据类型定义:ADT{数据对象:只包含英文字符
4、和数字的文本文档基本操作:CreateHuffmanTree(HuffmanTree&HT)初始条件:Huffman树已定义操作结果:初始化Huffman树FileRead(HuffmanTree&HT,charfilename[])初始条件:需压缩文档已存在操作结果:统计文档中出现的字符和字符的权值(即出现次数,下同)cmp(constvoid*a,constvoid*b)初始条件:待排序的数组已存在操作结果:对数组进行从小到大排序Select(HuffmanTree&HT,intk,int&s1,int&s2)初始条件:文档中
5、出现的字符和字符的权值已获得操作结果:选出k个叶子结点中权值最小的两个结点HuffmanCoding(HuffmanTree&HT,HCode&HC)初始条件:文档中出现的字符和字符的权值已获得操作结果:建立Huffman树,求各个字符的Huffman编码FilePrint(HuffmanTreeHT,HCodeHC)初始条件:Huffman编码以及各节点的权值已求得操作结果:将求得的数据分别写入HuffmanCode.txt、Char.txt、Weight.txtFileWrite(HCode&HC,charfilename[]
6、)初始条件:Huffman编码以及各节点的权值已求得操作结果:将文档翻译成Huffman编码,并以字符形式写入以filename为文件名的文件ReadSize(charfilename[])初始条件:无30操作结果:获取以filename为文件名的文件大小FileConvert(charfilename[])初始条件:File.txt已存在操作结果:将字符形式的Huffman编码翻译成二进制形式,每组成8bit就通过位操作合并成一个字节写入以filename为文件名的文件,最后不足8位时将最后的几位写入Tail.txtExFile
7、Read(HuffmanTree&HT,HCode&HC)初始条件:压缩生成的HuffmanCode.txt、Char.txt和Weight.txt已存在操作结果:从文件中读取字符、字符权值和其Huffman编码FileExtract(charfilename[])初始条件:压缩结果文件filename和tail.txt已存在操作结果:将以filename为文件名的文件和tail.txt中的字符写成编码的二进制字符形式,写入File00.txtFileTrans(HuffmanTree&HT,HCode&HC,intN,charf
8、ilename[])初始条件:已生成File00.txt并已求得各个字符的Huffman编码,Huffman树已建立操作结果:将Huffman编码翻译成原文件,写入以filename为文件名的文件CodingCompare(charfilename
此文档下载收益归作者所有