没有合适的资源?快使用搜索试试~ 我知道了~
哈夫曼编码译码器课程设计.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 59 浏览量
2021-10-02
14:04:24
上传
评论 2
收藏 677KB PDF 举报
温馨提示
试读
21页
哈夫曼编码译码器课程设计.pdf
资源推荐
资源详情
资源评论
滁州学院本科学年设计
1
学 年 设 计 报 告
设计题目 哈夫曼树的建立与实现
作者姓名
所学专业 网络工程
指导教师
2011 年 8 月 23 日
滁州学院本科学年设计
2
学年设计任务书
课程设计题目 哈夫曼树的建立与实现
组长 学号 班级
组别
第 组
专业
网络工程
组员
指 导 教 师
学 年 设 计 目 的
通过构建哈夫曼树对数据进行压缩,以节省存储空间。从而
可以用更少的内存空间来存储更多的信息, 缩短信息的传递时间。
学年设计所需环境 Windows XP VC++ 6.0
学年设计任务要求
⑴ 收集有关的资料,对如何构建哈夫曼树有了更加清晰的认识,
为哈夫曼树的编写提供了基本的框架。
⑵ 将所输入的数据信息进行编码构造成哈夫曼树。
⑶ 代码的编写和对每段的编码的解释使得源代码更具可读性。
学年设计工作进度计划
序号 起止日期 工 作 内 容 分工情况
1 2011 年 8 月 23 日~
2011 年 8 月 25 日
编辑打开文件的函数和哈夫曼树的
输出初态和终态
2 2011 年 8 月 26 日~
2011 年 8 月 27 日
查找资料对哈夫曼树相关的类型变
量的定义
3
2011 年 8 月 27 日~
2011 年 8 月 28 日
收集图片和生成哈夫曼树并写入文
件
4 2011 年 8 月 28 日~
2011 年 8 月 29 日
编写主函数以及修改文件的编辑
5
2011 年 8 月 29 日~
2011 年 8 月 29 日
构建哈夫曼树和收集相关资料
6 2011 年 8 月 29 日~
2011 年 8 月 31 日
编辑代码分配任务等其他相关事宜
指导教师签字: 年 月 日
教研室审核意见:
教研室主任签字: 年 月 日
滁州学院本科学年设计
3
目 录
1 引 言........................................................................................................................................................... 4
2 需求分析 .................................................................................................................................................... 4
3 概要设计 .................................................................................................................................................... 4
3.1 设计思路及方案 ................................................................................................................................ 4
3.2 模块的设计及介绍 ........................................................................................................................... 4
4 详细设计 .................................................................................................................................................... 8
4.1 主调函数 .............................................................................................................................................. 8
4.2 建立 H
UFFMAN
T
REE
............................................................................................................................ 9
4.3 生成 H
UFFMAN
树并写入文件 .......................................................................................................... 10
5 调试与操作说明 ...................................................................................................................................... 11
5.1 读出文本 ............................................................................................................................................. 11
5.2 输出哈夫曼树存储结构的初态 ........................................................................................................ 12
5.3 输出哈夫曼树存储结构的终态 ........................................................................................................ 12
5.4 输出哈夫曼树构成后的抽象图 ........................................................................................................ 14
6 学年设计总结与体会 .......................................................................................................................... 14
7 参考文献 .................................................................................................................................................. 15
8 致谢 .......................................................................................................................................................... 15
9 附录 .......................................................................................................................................................... 15
滁州学院本科学年设计
4
学年设计的主要内容
1 引 言
随着当今信息技术的发展, 为了方便和节省信息的存储和传递速度, 人们便创建了哈夫
曼编码。 哈夫曼编码是将文件进行压缩的一种压缩方法。 哈夫曼编码的最大的功能是能够用
更少的内存空间来存储更多的信息。 若要对文件进行编码则必须对其建立哈夫曼树, 其次对
这个哈夫曼树进行编码。 本学年设计的主要目标就是对如何建立哈夫曼树和如何进行编码的
一个详细介绍。
2 需求分析
问题描述: 打开一篇英文文章, 统计该文章中每个字符出现的次数, 然后以它作为权值,
对所有字符进行构建哈夫曼树。
问题补充:⑴ 从硬盘的一个文件里读出一段英语文章;
⑵ 统计这篇文章中的每个字符出现的次数;
⑶ 以字符出现字数作为权值,构建哈夫曼树,并将哈夫曼树的存储结构的初态
和终态进行输出。
具体介绍:
在 E 盘中预先建立一个 filel.txt 文档, 在文档中编辑一篇文章 (大写)。然后运行程序,
调用 fileopen() 函数读出该文章,显示在界面;再调用 jsq() 函数对该文章的字符种类进行统
计,并对每个字符的出现次数进行统计, 并且在界面上显示; 然后以每个字符出现次数作为
权值,调用 ChuffmanTree() 函数构建哈夫曼树,并调用 print1() 和 print2() 函数将哈夫曼的存
储结构的初态和终态进行输出。
3 概要设计
3.1 设计思路及方案
假设每种字符在电文中出现的次数为 Wi ,编码长度为 Li ,电文中有 n 种字符, 则电文
编码总长度为( W1*L1 )+(W2*L2)+.......(Wi*Li) 。若将此对应到二叉树上, Wi 为叶结点,
Li 为根结点到叶结点的路径长度。 那么,(W1*L1 )+(W2*L2)+.......(Wi*Li) 恰好为二叉树上
带权路径长度。以 n 种字符出现的频率作权,构造一棵哈夫曼树。
该系统将实现以下几大功能: 从硬盘读取字符串, 建立哈夫曼树, 输出哈夫曼树的存储
结构的初态和终态。
3.2 模块的设计及介绍
⑴ 从硬盘读取字符串
滁州学院本科学年设计
5
fileopen( 参数 ){
//利用此函数进行对将文件打开
实现命令;
打印输出;
}
⑵ 建立 HuffmanTree
通过三个函数来实现 :
void select(参数 ){ //从数组中选取两个最小的字符作为
//根节点的左右结点
初始化;
for{
接受命令;
处理命令;
}
说明:在 ht[l.......k] 中选择 parent 为 0 且权值最小的两个根结点的算法
int jsq(参数) {
// 统计字符的种类及其个数
初始化;
for{
接受命令;
处理命令;
}
}
说明:统计字符串中各种字母的个数以及字符的种类
void ChuffmanTree(){ 初始化; //利用此函数构造出哈夫曼树
for{
接受命令;
处理命令;
}
输出字符统计情况;
}
说明:构造哈夫曼树
⑶ 输出哈夫曼树的存储结构的初态和终态
分别调用 print1() 和 print2 ()来实现
void print1 (参数) { //输出哈夫曼树的初态
剩余20页未读,继续阅读
资源评论
- m0_632166132022-12-31资源很赞,希望多一些这类资源。
资料大全
- 粉丝: 14
- 资源: 26万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功