1、 数据结构课程设计实验报告书姓名: 班级:12数字媒体技术二班 学号: 2014 年 06 月 赫夫曼编码/译码器一、 实验目的1 进一步掌握最优二叉树的含义。2 掌握最优二叉树的结构特征,以及各种存储结构的特点及使用范围。3 熟练掌握哈夫曼树的建立和哈夫曼编码方法。4 掌握用指针类型描述、访问和处理运算。二、 实验内容编写一个哈夫曼码的编/译码系统,一个完整的系统应具有以下功能:(1) 初始化。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree.txt中。(2) 编码。利用已建好的哈夫曼树,对文件ToBeTra.txt中的正文进行编码,然后将结果存入文
2、件CodeFil.txt中。(3) 译码。利用已建好的哈夫曼树将文件CodeFile.txt中的代码进行译码,结果存入文件Textfile.txt中。(4) 打印哈夫曼树(Treeprinting).将已在内存中的哈夫曼树以直观的方式(比如树)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint.txt 中。三、 实验步骤1. 定义结点结构,定义哈夫曼树结构;2. 初始化哈夫曼树,存储哈夫曼树信息;3. 定义求哈夫曼编码的函数;4. 定义译哈夫曼编码的函数;5 写出主函数。6 测试系统。四、 实验内容1. 文件工程包含两个头文件,Huffman.h用于定义显示选项菜单的相关函数,
3、HuffmanTree.h用于定义与霍夫曼编码相关的类;包含三个cpp文件,Huffman.cpp用于实现显示选项菜单的相关函数,HuffmanTree.cpp用于实现与霍夫曼编码相关的类的成员函数等,HuffmanCode.cpp用于主函数的实现。2. 霍夫曼编码相关类程序中将霍夫曼树结点与霍夫曼编码相关操作分别封装为类通过对类内部数据的赋值与相关函数的操作,可以完成霍夫曼编码解码等操作3. 选项菜单等相关函数Init()函数用于从外部文件中加载霍夫曼树,因为树人工不好整理所以我设置了读入树的叶子结点与权值,然后内部编写函数将这两种数据整理成霍夫曼树ChooseCode()函数用于执行从终端
4、读取编码串,然后根据读取的霍夫曼树来解码ChooseRecode()函数用以执行解码操作,对从终端或者从文件读取的编码串进行解码并输出InputFromFile()函数用于从外部文件读取待解码的编码串OutputToFile()函数可以将霍夫曼树,解码后的字符串输出到外部文件中4. 霍夫曼编码操作编码首先从外部初始化霍夫曼树,即调用Init()函数从外部读取数据;然后选择编码串来源,可以从外部文件读取,也可从终端输入;最后是进行霍夫曼解码,调用HuffmanRecoding()函数;五、 实验结果首先在C盘下设置HuffmanTree.txt的初始值,第一行为叶子结点的值,第二行为权值然后设置
5、code.txt的初始值,为要解码的字符串运行程序第一步初始化第二步从code.txt读取编码串第三步,解码第四步,输出到HuffmanCode.txt文件还可以选择从终端输入编码串然后解码,输出到外部,比如编码串000011010(lqt)六、 实验心得实验之后,我对于程序设计的思路又有了加深的理解,同时掌握了一定的霍夫曼编码方面的知识。在实验中犯下的错误也显示出基础掌握不够牢固的劣根,以后我定当注意。 目 录第一章 总 论1一、项目概况1二、项目所在区域简介1三、报告编制依据2四、编制内容3五、简要结论3第二章 项目建设背景及必要性5一、项目建设背景5二、项目建设必要性5第三章 服务对象与
6、需求分析8第四章 建设内容及规模9一、建设内容9二、建设规模9第五章 项目选址及建设条件10一、项目选址10二、什邡市概况10三、建设条件11第六章 项目建设规划和工程方案设计15一、项目建设规划的指导思想、基本原则和重建目标15二、项目建设规划实施的保障措施16三、工程方案设计原则16四、总平面布局17五、建筑设计17六、结构设计19七、电气设计21八、给排水设计21九、通风及空调系统22十、建筑装修和防护23第七章 节能方案25一、用能标准和节能规范25二、主要节能措施25第八章 环境保护与消防设计28一、施工期环境保护28二、营运期环境保护28三、消防设计30第九章、安全文明施工33第十章 项目建设管理机构及人力资源配置36一、什邡市卫生项目灾后重建项目领导机构36二、项目建设实施的管理机构38三、人力资源配置39第十一章 项目招投标及进度计划40一、招标方案40二、项目建设进度计划40第十二章 投资估算及资金筹措42一、投资估算范围42二、投资估算依据42三、编制说明42四、估算结果43五、资金筹措45第十三章 社会效益评价46一、项目对本地区社会影响分析46二、项目与本地区互适性分析46三、社会风险分析48第十四章 结论和建议49一、结论49二、建议4916