![数据结构实验总结报告_第1页](http://file4.renrendoc.com/view/b7bb474731a0099035021584cebf8482/b7bb474731a0099035021584cebf84821.gif)
![数据结构实验总结报告_第2页](http://file4.renrendoc.com/view/b7bb474731a0099035021584cebf8482/b7bb474731a0099035021584cebf84822.gif)
![数据结构实验总结报告_第3页](http://file4.renrendoc.com/view/b7bb474731a0099035021584cebf8482/b7bb474731a0099035021584cebf84823.gif)
![数据结构实验总结报告_第4页](http://file4.renrendoc.com/view/b7bb474731a0099035021584cebf8482/b7bb474731a0099035021584cebf84824.gif)
![数据结构实验总结报告_第5页](http://file4.renrendoc.com/view/b7bb474731a0099035021584cebf8482/b7bb474731a0099035021584cebf84825.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
千里之行,始于足下让知识带有温度。第2页/共2页精品文档推荐数据结构实验总结报告数据结构试验总结报告
一、调试过程中碰到哪些问题?
(1)在二叉树的调试中,从广义表生成二叉树的模块花了较多时光调试。
因为一开头设计的广义表的字符串表示没有思量清楚,处理惟独一个孩子的节点时发生了混乱。调试之初不以为是设计的问题,从而在代码上花了不少时光调试。
目前的设计是:
Tree=Identifier(Node,Node)
Node=Identifier|()|Tree
Identifier=ASCIICharacter
例子:a(b((),f),c(d,e))
这样便消退了歧义,保证惟独一个孩子的节点和叶节点的处理中不存在问题。
(2)Huffman树的调试花了较长时光。Huffman编码本身并不难处理,棘手的是输入输出。①Huffman编码后的文件是按位存储的,因此需要位运算。
②文件结尾要刷新缓冲区,这里简单引发边界错误。
在实际编程时,首先编写了屏幕输入输出(用0、1表示二进制位)的版本,然后再加入二进制文件的读写模块。主要调试时光在后者。
二、要让演示版压缩程序具有有用性,哪些地方有待改进?
(1)压缩文件的最后一字节问题。
压缩文件的最后一字节不一定对齐到字节边界,因此可能有几个多余的0,而这些多余的0可能恰好构成一个Huffman编码。解码程序无法获知这个编码是否属于源文件的一部分。因此有的文件解压后末尾可能浮现一个多余的字节。
解决计划:
①在压缩文件头部写入源文件的总长度(字节数)。需要四个字节来存储这个信息(假定文件长度不超过4GB)。
②增强第257个字符(在一个字节的0~255之外)用于EOF。对于较长的文件,
会造成较大的损耗。
③在压缩文件头写入源文件的总长度%256的值,需要一个字节。因为最后一个字节存在或不存在会影响文件总长%256的值,因此可以按照这个值推断囫囵压缩文件的最后一字节末尾的0是否在源文件中存在。
(2)压缩程序的效率问题。
在编写压缩解压程序时
①编写了屏幕输入输出的版本
②将输入输出语句用位运算封装成一次一个字节的文件输入输出版本
③为提高输入输出效率,削减系统调用次数,增强了8KB的输入输出缓存窗口
这样一来,每写一位二进制位,就要在内部举行两次函数调用。假如将这些代码合并起来,再针对位运算举行一些优化,明显不利于代码的可读性,但对程序的执行速度将有一定提高。
(3)程序界面越发人性化。
HuffmanTreeDemo(C)2022-12-16boj
Usage:huffman[-cfile][-ufile]output_file
-cCompressfile.e.g.huffman-ctest.txttest.huff
-uUncompressfile.e.g.huffman-utest.hufftest.txt
目前的程序提醒如上所示。假如要求有用性,可以考虑加入其他人性化的功能。
三、调研常用的压缩算法,对这些算法举行比较分析
(一)无损压缩算法
①RLE
RLE又叫RunLengthEncoding,是一个针对无损压缩的十分容易的算法。它用重复字节和重复的次数来容易描述来代替重复的字节。尽管容易并且对于通常的压缩十分低效,但它有的时候却十分实用(例如,JPEG就使用它)。
变体1:重复次数+字符
文本字符串:AAABBBCCCCDDDD,编码后得到:3A3B4C4D。
变体2:特别字符+重复次数+字符
文本字符串:AAAAABCCCCBCCC,编码后得到:BB5ABB4CBB3C。编码串的最开头说明特别字符B,以后B后面跟着的数字就表示出重复的次数。
变体3:把文本每个字节分组成块,每个字符最多重复127次。每个块以一个特别字节开始。那个特别字节的第7位假如被置位,那么剩下的7位数值就是后面的字符的重复次数。假如第7位没有被置位,那么剩下7位就是后面没有被压缩的字符的数量。例如:文本字符串:AAAAABCDEFFF。编码后得到:85A4BCDE83F(85H=10000101B、4H=00000100B、83H=10000011B)
②Huffman
哈夫曼编码是无损压缩当中最好的办法。它使用预先二进制描述来替换每个符号,长度由特别符号浮现的频率打算。常见的符号需要很少的位来表示,而不常见的符号需要无数为来表示。
哈夫曼算法在转变任何符号二进制编码引起少量密集表现方面是最佳的。然而,它并不处理符号的挨次和重复或序号的序列。
③Rice
Rice编码背后的基本思想是尽可能的用较少的位来存储多个字(正像使用哈夫曼编码一样)。实际上,Rice类似静态的哈夫曼编码(例如,编码不是由实际数据内容的统计信息打算,而是由小的值比高的值常见的假定打算)。编码十分容易:将值X用X个‘1’位之后跟一个0位来表示。
对于由大word(例如:16或32位)组成的数据和教低的数据值,Rice编码能够获得较好的压缩比。音频和高动态变化的图像都是这种类型的数据,它们被预处理过(例如delta相邻的采样)。
尽管哈夫曼编码处理这种数据是最优的,却因为几个缘由而不适合处理这种数据(例如:32位大小要求16GB的柱状图缓冲
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年旅游组团服务合同
- 2025年分期付款珠宝首饰合同
- 装修工程索赔合同样本
- 工程补充合同申请报告
- 绿色能源项目技术支持合同
- 纺织服装定制制作协议合同
- 工业设备维护服务合同协议
- 个人出租房屋合同范文
- 2025年度渔业养殖设施承包及更新合同4篇
- 二零二五年度车辆拍卖与委托代理合同4篇
- 旅行社脱团安全协议书范文模板
- 期中测试卷-2024-2025学年统编版语文五年级上册
- 新教材人教版高中物理选择性必修第三册全册各章节知识点考点
- CJT 354-2010 城市轨道交通车辆空调、采暖及通风装置技术条件
- 暑假作业 11 高二英语语法填空20篇(原卷版)-【暑假分层作业】2024年高二英语暑假培优练(人教版2019)
- 2024年江西省南昌市南昌县中考一模数学试题(含解析)
- 绘本的分镜设计-分镜的编排
- 查干淖尔一号井环评
- 体检中心分析报告
- 人教版初中英语七八九全部单词(打印版)
- 最高人民法院婚姻法司法解释(二)的理解与适用
评论
0/150
提交评论