




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构实验报告利用Huffman 编码对文件进行压缩解压学生:XXX学号:XXXXXXXX联系: HYPERLINK mailto:XXXXXXXXXXX.com XXXXXXXXXXX.com.实验题目利用Huffman 编码对文件进行压缩解压.完成人(姓名、学号)姓名:XXX学号:XXXXXXXX.报告日期2007年12月12日星期二实习目标口学会对树的基本操作口学会对文件进行操作口 利用Huffman编码对文件压缩解压实习要求口实现最小堆模板类口利用最小堆构建 Huffman 树口实现Huffman 编码和解码口根据用户从键盘输入的报文文本,输出各字符的Huffman编码以及报文的编码
2、+根据用户从键盘输入一串报文文本,输出各字符的Huffman编码+ 输出报文的Huffman编码及长度+根据输入的Huffman编码,解码输出口 利用Huffman编码和解码对二进制文件的压缩和解压1.设计思路开发环境:Microsoft Visual C+ 2005设计思路:.设计Pack类储存字符的权值.设计MinHeap模板类构建最小堆. 设计ExtBinTree模板类为带权二叉树.设计Compress模板类以实现文件的压缩解压.主要数据结构MinHeap.h: 头文件,包含MinHeap模板类的类界面以及定义;HuffmanTree.h:头文件,包含ExtBinTree模板类以及Com
3、press模板类的类的的类界面以及定义main.cpp:调用上述头文件实现相关操作.主要代码结构主要代码结构为见附件中各文件的代码注释.主要代码段分析主要代码段分析,见附件中的代码注释基本数据源程序代码彳f数:约 800行完成该实习投入的时间:二十四小时(不包括写实验报告的时间)与其他同学讨论交流情况:感谢刘畅同学对程序的测试测试数据设计.对屏幕输入字符进行 Huffman编码.根据Huffman树非唯一性,虽然和课件上有些许不同,但是还是正确的.输入字符串:CASTCASTSATATATASA. 输出编码:A:0 C:110S:111T:10. 输入霍夫曼编码:0111010110110.
4、输出译码:ASATCC.对”实验05.PPT”的压缩操作.使用0秒(不足一秒按0秒计算),压缩率为56.1755%.对实验05.ppt.hfm (即刚才生成的压缩文件)的解压操作.使用0秒(不足一秒按0秒计算),解压后文件无异常.对一个18M的EXE安装包前后进行压缩和解压操作,分别用时10秒和9秒测试结果分析程序运行的系统资源配置操作系统:Microsoft Windows XP Professional SP2CPU:AMD Athlon 3600+ 2.0GRAM:1024M DDRII开发环境:Microsoft Visual C+ 2005对TXT文档进行压缩和解压后,通过WinMe
5、rge 检验和原文件无差异对MP3和EXE文件压缩和解压后仍能正常使用对于中文名字和带有空格的路径均能正确无误识别文件名只能小于16个字符(包括后缀名),否则解压会出错(只预留了 16个字节用于储存文件名)相对于不用文件块读写的程序,效率提高了三倍以上具有动态进度条,可以显示当前压缩和解压的进度百分比(当然消耗了一些系统资源)出错处理不够充分,特别是cin部分,如果误输入可能会造成死循环实习过程中遇到问题及解决过程一开始时候的程序运行很慢,压缩一个4M左右的文件需要七八秒,后来改用文件块缓存字节来读写后,压缩一个4M的文件只需要两秒左右的时间.本来是只想写一个进度条而已的,后来发现如果只读一个
6、字节就判断一次进度条的话会很消耗系统 资源后来干脆麻烦点用文件块来缓存.不过至于一次缓存多少字节才能达到最好的效果还未知,现在设置的是一次缓存 40KB的数据本来一个一个字节读的时候对最后一个字节的操作基本没费什么劲,但是在文件块读写的时候就不是那么清晰明了了,后来经过仔细Debug,才找到错误的所在.许多问题都是这样对于中文名和带空格路径,用C+的fstream 就不支持,但是C中的FILE*就支持,不知道为什么.还有C+中的fstream 的成员函数read返回值很奇怪,不知道如何获取成功读入的项数.改用C中的FILE*文件指针后就解决掉了由于这次实验的各个步骤是一环套一环的,在哪里出错很难找得出来,所以这次实验调试消耗的时间特别多.最郁闷的一次错误是发现在取得字符 C的第N位函数中居然把0 x40写成了 0 x30.有时候文件解压出来不对,但是又不清楚是压缩时候错了 , 还是解压时候错
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学生创新创业团队建设课件
- 办公楼清洁服务协议书
- 软件工程管理体系构建与实践操作技巧培训课程
- 教育公司股权转让协议书
- 质量管理标准及认证要求指南
- 网优投诉常见问题
- 景区项目承包合同
- 三农人才培养方案集
- 2025年安阳学院单招职业倾向性考试题库标准卷
- 哈密文旅集团实习的内容
- 2024陆上风电场改造拆除与循环利用设计导则
- 《消费者权益与法律保护》课程培训教案课件
- 新概念英语第一册语法练习
- 无人机法律法规与安全飞行 第2版 课件 8-2 -无人机人员的法律责任
- 产品外观检验标准通用
- 《建筑基坑工程监测技术标准》(50497-2019)
- 2023年江苏省泰州市高职单招数学摸底卷五(含答案)
- 质量管理体系中英文缩写与其解释
- 历史文献学之文献校勘给09历史开第二章
- 中国教育行业调查报告-《中国教育行业白皮书》
- 铸造厂重要危险源清单
评论
0/150
提交评论