没有合适的资源?快使用搜索试试~ 我知道了~
首页哈夫曼编码/译码器 C++数据结构课程设计
哈夫曼编码/译码器 C++数据结构课程设计

在当今信息爆炸时代,如何采用有效的数据压缩技术节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视,哈夫曼正是一种应用广泛且非常有效的数据压缩技术。哈夫曼编码的应用很广泛,利用哈夫曼树求得用于通信的二进制编码称为哈夫曼编码。树中从根到每一个叶子都有一条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为和各叶子对应的字符的编码,这就是哈夫曼编码。而与之相反的过程就称为译码。本文主要完成哈夫曼树的建立、哈夫曼编码和译码的功能。我们主要运用的数据结构是哈夫曼结点结构和编码结构,采用顺序链表形式存储。整体思路清晰明了,算法通俗易懂,通过调试运行,执行结果真确。
资源详情
资源评论
资源推荐

数据结构课程设计报告
选题名称: 哈夫曼编码 译码器
系(院):
专 业:
班 级:
姓 名:学 号:
指导教师:
学年学期: 2007 ~ 2008 学年 第 2 学期
2008 年 6 月 25 日

设计任务书
课题
名称
数据结构
设计
目的
1.加深对二叉树的结构特性的理解;
2.熟练掌握二叉树的存储结构,特别是二叉链表类的描述及其实现方法;
3.熟练掌握二叉树的遍历算法原理及实现;
4.学会编写实现二叉树的各种算法;
5.掌握二叉树的应用方法。
实验
环境
Visual C++
任务
要求
(1)初始化:键盘输入字符集大小 n、n 个字符和 n 个权值,建立哈夫曼树;
(2)编码:利用建好的哈夫曼树生成哈夫曼编码;
(3)输出编码;
(4)译码功能;
(5)设字符集及频度如下表:
字符 空格 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
频度 186 64 13 22 32 103 21 15 47 57 1 5 32 20 57 63 15 1 48 51 80 23 8 18 1 16 1
工作进度计划
序号 起止日期 工 作 内 容
1
6 月 15 日上午 查找资料,选择合适的数据结构
2
6 月 15 日下午
算法设计与分析
3
6 月 16 日—6 月 17 日
程序设计、实现、调试
4
6 月 18 日—6 月 19 日
课程设计报告,ppt 演示搞
指导教师(签章):
2008 年 6 月 10 日
注意:
1. 任务书格式参照“任务书范例”执行。
2. 范例中的红色文字应根据你所选择的具体课题,修改为对应的内容。
3. 范例中的其它内容不变。

摘要:
在当今信息爆炸时代,如何采用有效的数据压缩技术节省数据文件的存储空
间和计算机网络的传送时间已越来越引起人们的重视,哈夫曼正是一种应用广
泛且非常有效的数据压缩技术。哈夫曼编码的应用很广泛,利用哈夫曼树求得
用于通信的二进制编码称为哈夫曼编码。树中从根到每一个叶子都有一条路径,
对路径上的各分支约定:指向左子树的分支表示“码,指向右子树的分支表示
“码,取每条路径上的“或“的序列作为和各叶子对应的字符的编码,这就
是哈夫曼编码。而与之相反的过程就称为译码。本文主要完成哈夫曼树的建立、
哈夫曼编码和译码的功能。我们主要运用的数据结构是哈夫曼结点结构和编码
结构,采用顺序链表形式存储。整体思路清晰明了,算法通俗易懂,通过调试
运行,执行结果真确。
关键词:哈夫曼;编码;译码;
1

目 录
1 需求分析.....................................................................................................................3
2 概要设计.....................................................................................................................3
2.1 总体功能结构 3
2.2 数据结构设计 5
2.3 方法及原理 6
3 详细设计和实现.........................................................................................................7
3.1 创建 Huffman 树 7
3.2 编码 10
3.3 译码 12
4 调试与操作说明.......................................................................................................14
2

1 需求分析
设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下
项目,直到选择退出为止。
【基本要求】
初始化:键盘输入字符集大小 、 个字符和 个权值,建立哈夫曼树;
编码:利用建好的哈夫曼树生成哈夫曼编码;
输出编码;
译码功能;
设字符集及频度如下表:
字符 空格 !"#$%&
频度 '(()))('
'''(
通过此次课程设计主要达到以下目的:
.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计
能力;
.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基
本方法和技能;
.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作
者所应具备的科学的工作方法和作风。
本程序采用 "*+,-.//编程实现。
2 概要设计
2.1 总体功能结构
本程序的主要功能是实现对用户输入的字符编码,然后再把编码结果翻译
成原字符。但在进行这些操作之前必须做一项工作,就是创建 ,01- 树。
哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的
3
剩余22页未读,继续阅读















feifei20090407
- 粉丝: 0
- 资源: 48
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论11