哈夫曼编码译码器课程设计

哈夫曼编码译码器课程设计

ID:14425917

大小:164.00 KB

页数:23页

时间:2018-07-28

哈夫曼编码译码器课程设计_第1页
哈夫曼编码译码器课程设计_第2页
哈夫曼编码译码器课程设计_第3页
哈夫曼编码译码器课程设计_第4页
哈夫曼编码译码器课程设计_第5页
资源描述:

《哈夫曼编码译码器课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、山东建筑大学信息与电气工程学院课程设计说明书目录摘要Ⅱ正文1一.设计目的和要求1二.设计原理1三.设计内容11.模块的设计及介绍22.主要模块程序流程图53.系统实现84.系统调试11总结与致谢...............................................................................14参考文献..........................................................................

2、.........15附录源程序161山东建筑大学信息与电气工程学院课程设计说明书摘要在当今信息爆炸时代,如何采用有效的数据压缩技术来节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视。哈夫曼编码正是一种应用广泛且非常有效的数据压缩技术。哈夫曼编码的应用很广泛,利用哈夫曼树求得的用于通信的二进制编码称为哈夫曼编码。树中从根到每个叶子都有一条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为和各个对应的字符的编码,这就

3、是哈夫曼编码。通常我们把数据压缩的过程称为编码,解压缩的过程称为解码。电报通信是传递文字的二进制码形式的字符串。但在信息传递时,总希望总长度尽可能最短,即采用最短码。关键词:哈夫曼树、编码、解码、设计1山东建筑大学信息与电气工程学院课程设计说明书正文一.设计目的和要求打开一篇英文文章,统计该文章中每个字符出现的次数,然后以它们作为权值,对每一个字符进行编码,编码完成后再对其编码进行译码。实现的具体功能如下:1.从硬盘的一个文件里读出一段英语文章;2.统计这篇文章中的每个字符出现的次数;3.以字符出现字数作为

4、权值,构建哈夫曼树,并将哈夫曼树的存储结构的初态和终态进行输出;4.对每个字符进行编码并将所编码写入文件;5.对所编码进行译码输出。二.设计原理本课题是用最优二叉树即哈夫曼树来实现哈夫曼编码译码器的功能。假设每种字符在电文中出现的次数为Wi,编码长度为Li,电文中有n种字符,则电文编码总长度为(W1*L1)+(W2*L2)+…+(Wi*Li)。若将此对应到二叉树上,Wi为叶结点,Li为根结点到叶结点的路径长度。那么,(W1*L1)+(W2*L2)+…+(Wi*Li)恰好为二叉树上带权路径长度。因此,设计电文

5、总长最短的二进制前缀编码,就是以n种字符出现的频率作权,构造一棵哈夫曼树,此构造过程称为哈夫曼编码。该系统将实现以下几大功能:从硬盘读取字符串,建立哈夫曼树,输出哈夫曼树的存储结构的初态和终态,输出各种字符出现的次数以及哈夫曼编码的译码等。三.设计内容对系统进行分析,给出系统结构图:21山东建筑大学信息与电气工程学院课程设计说明书哈夫曼树编码译码器退出译码编码图1 系统结构图(1).编码:提示要编码的文件文件名→读取文件→以字母出现次数为权值建立哈弗曼树→对文本进行哈弗曼编码并输出编码→提示将编码保存的文件

6、名→保存编码文件。 (2).译码:提示输入要译码的文件名→利用建立好的哈弗曼树进行译码→将译码输出→提示保存译码文件的文件名→保存译码文件。(3).退出:退出系统,程序运行结束。 1.模块的设计及介绍1.1从硬盘读取字符串fileopen(参数){实现命令;打印输出;}1.2建立HuffmanTree通过三个函数来实现:voidselect(参数){初始化;for{21山东建筑大学信息与电气工程学院课程设计说明书接受命令;处理命令;}}说明:在ht[1....k]中选择parent为0且权值最小的两个根结点

7、的算法intjsq(参数){初始化;for{接受命令;处理命令;}}说明:统计字符串中各种字母的个数以及字符的种类voidChuffmanTree(){初始化;for{接受命令;处理命令;}输出字符统计情况;}说明:构造哈夫曼树1.3输出哈夫曼树的存储结构的初态和终态分别调用print1()和print2()来实现voidprint1(参数)21山东建筑大学信息与电气工程学院课程设计说明书{初始化;输出初态;}说明:输出哈夫曼树的初态voidprint2(参数){for{输出终态;}}说明:输出哈夫曼树的终

8、态1.4哈夫曼编码和译码voidHuffmanEncoding(参数){定义变量;{处理命令;}}说明:哈夫曼编码char*decode(参数){定义变量;while{接受命令;处理命令;21山东建筑大学信息与电气工程学院课程设计说明书}}说明:哈夫曼译码2.主要模块程序流程图下面介绍三个主要的程序模块流程图:2.1主函数流程图:结束统计字符种类及频率字符总数num建立哈夫曼树哈夫曼编码哈夫曼译码打开文件?开始否

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。