- 1
- 0
- 约2.45万字
- 约 30页
- 2019-10-20 发布于湖北
- 举报
数据结构课程设计
哈夫曼编码/译码器
PAGE 4
PAGE 5
课 程 设 计
哈夫曼编码/译码器
系 别 :
专业(班级):
作者(学号):
指导教师:
完成日期:
目 录
TOC \o 1-3 \h \z \u 1 项目研究背景与意义 3
1.1项目研究背景 3
1.2项目研究意义 3
2 需求分析 4
2.1设计要求与分析 4
2.2 基本要求 4
3 概要设计 5
3.1系统功能模块图 5
3.2主要功能函数 5
4详细设计 6
4.1数据结构的定义 6
4.1.1宏定义 6
4.1.2 huffman树的结点结构 6
4.1.3 huffman编码结构 6
4.1.4 字符及其编码的结构 6
4.2建立哈夫曼树 7
4.2.1基本原理 7
4.2.2构造思想 7
4.2.3具体构造方法 8
4.2.4建立huffuman树函数 9
4.3建立huffman编码 11
4.3.1构造思想 11
4.3.2建立huffman编码函数 11
4.4输出huffman编码函数 12
4.5对字符串进行编码 12
4.5.1构造思想 12
4.5.2字符串编码函数 13
4.6将权值数据存放在数据文件(文件名为data.txt中)的程序 18
5 调试分析 19
5.1输出huffman编码,即空格和26个大写字母的界面。 19
5.2对字符串进行编码的界面 19
5.3将权值数据存放在数据文件(文件名为data.txt) 的界面 19
6总结 20
参考文献 21
附录源代码 22
INDEX \o S \c 2 \z 2052
1 项目研究背景与意义
1.1项目研究背景
在科技飞速发展的今天,信息传输显得尤为重要,这主要体现在计算机之间的数据传输,主要包括文字,声音,图像,视频等文件的传输,而计算机不能直接处理这些信息,计算机只能识别二进制数据。例如文字,在数据通讯中,传送方要将传送的文字转换成由二进制字符0、1组成的二进制串,而接受方要将二进制字符0、1组成的二进制串还原成对应的文字形式。于是便完成了文字数据的传输过程。时下,数据结构是一门随着计算机科学的发展而逐渐形成的新兴学科。随着计算机技术的发展,计算机的应用领域从最初的科学计算发展到人类社会的各个领域,计算机处理的对象也由纯粹的数值发展到字符、表格、图像和声音等各种具有一定结构的数据,这就给程序设计带来一些新的问题。与飞速发展的计算机硬件相比,计算机软件的发展相对缓慢。研究数据结构可以解决计算机之间的数据传输效率低下的问题。在数据结构中,研究树形结构对数据编码有很大作用,对数据构造二叉树编码应用广泛。
1.2项目研究意义
本设计旨在解决数据通讯中传输字符过长的问题,哈夫曼编码能很好地解决这个问题。哈夫曼编码是根据哈夫曼算法够造的哈夫曼树所得到的,哈夫曼算法使得编码总长度最小。哈夫曼编码的理论依据是变长编码理论,将使用次数多的代码转换成长度较短的代码,而是用次数少的可以使用较长的编码,并且保持编码的唯一可解性。利用哈夫曼编码进行信息通讯可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
2 需求分析
2.1设计要求与分析
在当今信息爆炸时代,如何采用有效的数据压缩技术节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视,哈夫曼编码正是一种应用广泛且非常有效的数据压缩技术。
哈夫曼编码的应用很广泛,利用哈夫曼树求得的用于通信的二进制编码称为哈夫曼编码。哈夫曼树中从根到每个叶子都有一条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为和各个叶子对应的字符的编码,这就是哈夫曼编码。
假设每种字符在字符中出现的次数为Wi,编码长度为Li,字符中有n 种字符,则字符编码总长为WiLi。若将此对应到二叉树上,Wi为叶节点的权,Li为根节点到叶节点的路径长度。那么,WiLi恰好为二叉树上带权路径长度。
2.2 基本要求
设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。
1将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中)
2采用静态存储结构
3初始化:键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树;
4编码:利用建好的哈夫曼树生成哈夫曼编码;
5输出编码;
6设字符集及频度如下表:
字符 空格 A B C D E F G H I J K
原创力文档

文档评论(0)