- 9
- 0
- 约1.52千字
- 约 14页
- 2017-04-09 发布于辽宁
- 举报
数据结构课程设计报告赫夫曼编码译码器-毕业论文
姓名:
班级:12数字媒体技术二班
学号:
2014 年 06 月
赫夫曼编码/译码器
一、 实验目的
1. 进一步掌握最优二叉树的含义。
2. 掌握最优二叉树的结构特征,以及各种存储结构的特点及使用范围。
3. 熟练掌握哈夫曼树的建立和哈夫曼编码方法。
4. 掌握用指针类型描述、访问和处理运算。
二、 实验内容
编写一个哈夫曼码的编/译码系统,一个完整的系统应具有以下功能:
(1) 初始化。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree.txt中。
(2) 编码。利用已建好的哈夫曼树,对文件ToBeTra.txt中的正文进行编码,然后将结果存入文件CodeFil.txt中。
(3) 译码。利用已建好的哈夫曼树将文件CodeFile.txt中的代码进行译码,结果存入文件Textfile.txt中。
(4) 打印哈夫曼树(Treeprinting).将已在内存中的哈夫曼树以直观的方式(比如树)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint.txt 中。
三、 实验步骤
1. 定义结点结构,定义哈夫曼树结构;
2. 初始化哈夫曼树,存储哈夫曼树信息;
3. 定义求哈夫曼编码的函数;
4. 定义译哈夫曼编码的函数;
5. 写出主函数。
6. 测试系统。
四、 实验内容
1. 文件
工程包含两个头文件,Huffman.h用于定义显示选项菜单的相关函数,HuffmanTree.h用于定义与霍夫曼编码相关的类;包含三个cpp文件,Huffman.cpp用于实现显示选项菜单的相关函数,HuffmanTree.cpp用于实现与霍夫曼编码相关的类的成员函数等,HuffmanCode.cpp用于主函数的实现。
2. 霍夫曼编码相关类
程序中将霍夫曼树结点与霍夫曼编码相关操作分别封装为类
通过对类内部数据的赋值与相关函数的操作,可以完成霍夫曼编码解码等操作
3. 选项菜单等相关函数
Init()函数用于从外部文件中加载霍夫曼树,因为树人工不好整理所以我设置了读入树的叶子结点与权值,然后内部编写函数将这两种数据整理成霍夫曼树
ChooseCode()函数用于执行从终端读取编码串,然后根据读取的霍夫曼树来解码
ChooseRecode()函数用以执行解码操作,对从终端或者从文件读取的编码串进行解码并输出
InputFromFile()函数用于从外部文件读取待解码的编码串
OutputToFile()函数可以将霍夫曼树,解码后的字符串输出到外部文件中
4. 霍夫曼编码操作
编码首先从外部初始化霍夫曼树,即调用Init()函数从外部读取数据;
然后选择编码串来源,可以从外部文件读取,也可从终端输入;
最后是进行霍夫曼解码,调用HuffmanRecoding()函数;
五、 实验结果
首先在C盘下设置HuffmanTree.txt的初始值,第一行为叶子结点的值,第二行为权值
然后设置code.txt的初始值,为要解码的字符串
运行程序
第一步初始化
第二步从code.txt读取编码串
第三步,解码
第四步,输出到HuffmanCode.txt文件
还可以选择从终端输入编码串然后解码,输出到外部,比如编码串000011010(lqt)
六、 实验心得
实验之后,我对于程序设计的思路又有了加深的理解,同时掌握了一定的霍夫曼编码方面的知识。在实验中犯下的错误也显示出基础掌握不够牢固的劣根,以后我定当注意。
您可能关注的文档
- 市城风景综合体项目施工方案研究硕士论文-本科论文.doc
- 市城轨道交通轨道设备运营维保方案-本科论文.doc
- 市城轨道交通安全监理规划-本科论文.doc
- 市城轻轨铁路工程项目施工组织设计方案-本科论文.doc
- 市城设计与城中村的改造创新--以合肥葛大店为例-本科论文.doc
- 市城小型公交客车总体布置设计-本科论文.doc
- 市某洁净污水处理厂配套截污主干管工程施工组织设计方案说明书-本科论文.doc
- 市政工程试验检测方法 市政工程技术-毕业论文.doc
- 市某数字城管系统集约型模式建设方案建设立项建设可行性论证研究报告-本科论文.doc
- 式槽太阳能热发电系统中内置扰流柱群集热管的换热特性研究-本科论文.doc
原创力文档

文档评论(0)