没有合适的资源?快使用搜索试试~ 我知道了~
首页数据结构课程设计_哈夫曼树
数据结构课程设计_哈夫曼树
需积分: 16 21 下载量 162 浏览量
更新于2023-03-16
7
收藏 328KB DOC 举报
1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。 2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。
资源详情
资源推荐
数据结构课程设计报告 第 1 页,共 40 页
.课程设计目的
、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解
指定问题。
初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水
平,并在此过程中培养他们严谨的科学态度和良好的工作作风。
.课程设计任务与要求:
任务
哈夫曼树应用
功能:
从终端读入字符集大小 ,以及 个字符和 个权值,建立哈夫曼树并将它存于文件 中将
已在内存中的哈夫曼树以直观的方式(比如树)显示在终端上;
利用已经建好的哈夫曼树(如不在内存,则从文件 中读入),对文件 中的正文
进行编码,然后将结果存入文件 中,并输出结果,将文件 以紧凑格式先是在终端上,
每行 个代码。同时将此字符形式的编码文件写入文件 中。
利用已建好的哈夫曼树将文件 中的代码进行译码,结果存入文件 中,并输出结
果。
分步实施:
)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
)完成最低要求:完成功能 ;
)进一步要求:完成功能 和 。有兴趣的同学可以自己扩充系统功能。
要求:
)界面友好,函数功能要划分好
)总体设计应画一流程图
)程序要加必要的注释
)要提供程序测试方案
)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
数据结构课程设计报告 第 2 页,共 40 页
要求:
、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计
实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备
工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代
码的重用率。
、设计的题目要求达到一定工作量( 行以上代码),并具有一定的深度和难度。
、程序设计语言推荐使用 ,程序书写规范,源程序需加必要的注释
、每位同学需提交可独立运行的程序;
、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于
页(代码不算);
、课程设计实践作为培养学生动手能力的一种手段,单独考核。
.课程设计说明书
一 需求分析
哈夫曼树应用
要求用到数据结构课上学到的树的知识,所以就要充分而清晰的理解关于树的知识。
利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在
发送端通过一个编码系统能够对待传输数据预先编码,在接收端将传来的数据进行译码。对于双工信道
(即可以双向传输信息的信道),每段都需要一个完整的编译系统。试为这样的信息收发站写一个哈夫曼
的编译码系统。
赫夫曼树锻炼我们的编码能力,真正理解数据结构的编码思想!并且锻炼我们的动手能力和成员间的配
合,提高程序编写能力。
在信息传递时,希望长度能尽可能短,即采用最短码。赫夫曼编码的应用,就是采用这种有效的数据压
缩技术可以节省数据文件的存储空间和计算机网络的传送时间。
综上,做这个课题,要具备的知识就是线性表的基本算法,文件的保存和读取算法,必要的 或者 知
识(本次我将使用 实现),以及丰富的程序调适经验。
二 概要设计
哈夫曼树应用
从终端读入字符集大小 ,以及 个字符和 个权值,建立哈夫曼树并将它存于文件 中将
已在内存中的哈夫曼树以直观的方式(比如树)显示在终端上;
利用已经建好的哈夫曼树(如不在内存,则从文件 中读入),对文件 中的正文
数据结构课程设计报告 第 3 页,共 40 页
进行编码,然后将结果存入文件 中,并输出结果,将文件 以紧凑格式先是在终端上,
每行 个代码。同时将此字符形式的编码文件写入文件 中。
利用已建好的哈夫曼树将文件 中的代码进行译码,结果存入文件 中,并输出结果
定义四个结构体变量,
父亲 "!左孩子 #!右孩子 #,权值 $%。
设计实现主要功能的函数有:
查询权值最小且 " 为 的两个节点的函数 &#();
构建赫夫曼树 ',并求出 个字符的赫夫曼编码 ' 的函数 #%();
文件输入输出流:(")*+()")*+
本系统主要对赫夫曼树进行编码和译码,包括了一下几个模块:
插入字符,;
查询字符(#;
编码-#%;
译码.#%;
为了使用的方便,我们还是使用了函数 ##()用来选择;
为了使界面美观,使用了大量的 #)函数,输出一个界面。
三 详细设计
定义一个结构体
/"()#0赫夫曼树的结构体
##
$%权值
"!#!#
1!2 动态分配数组存储赫夫曼树
/"#22# 动态分配数组存储赫夫曼编码表
&# 函数
3'!!2"!2"
&# 函数,选出 ' 树到 为止,权值最小且 " 为 的 个节点
构建赫夫曼树函数
3#%4'!#4'!
构建赫夫曼树 ',并求出 个字符的赫夫曼编码 '
0
!(!#!!!$
"!"
#2#!5
数据结构课程设计报告 第 4 页,共 40 页
67
0
)
1
728
'7#2(5 号单元未用
767初始化 个叶子结点
0
"9请输入第: 字符信息和权值:9! 文件输入
(#9:#:9!45!4$
$%#;7<=<
0
#)
1
'>?#75
'>?$%7$
'>?"7
'>?#7
'>?#7
1
67初始化其余的结点
0
'>?#7<<
'>?$%7
'>?"7
'>?#7
'>?#7
1
767建立赫夫曼树
0
&#'!8!4"!4"
在 '>8?选择一个双亲为 且权值最小的两个节点,
'>"?"7'>"?"7 其序号分别为 " 和 "
'>?#7"'>?#7"
'>?$%7'>"?$%'>"?$%
1
从叶子到根逆向求每个字符的赫夫曼编码
'7##2(5#2分配 个字符编码 的头指针项链。。
#7#2#2(5# 非配一个工作空间给他求编码
#>8?7<=< 编码 结束符
767给 个字符编码
0
(78 编码结束符位置
#7!7'>?";7#7!7'>?"
剩余19页未读,继续阅读
qq_26380341
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 保险服务门店新年工作计划PPT.pptx
- 车辆安全工作计划PPT.pptx
- ipqc工作总结PPT.pptx
- 车间员工上半年工作总结PPT.pptx
- 保险公司员工的工作总结PPT.pptx
- 报价工作总结PPT.pptx
- 冲压车间实习工作总结PPT.pptx
- ktv周工作总结PPT.pptx
- 保育院总务工作计划PPT.pptx
- xx年度现代教育技术工作总结PPT.pptx
- 出纳的年终总结PPT.pptx
- 贝贝班班级工作计划PPT.pptx
- 变电值班员技术个人工作总结PPT.pptx
- 大学生读书活动策划书PPT.pptx
- 财务出纳月工作总结PPT.pptx
- 大学生“三支一扶”服务期满工作总结(2)PPT.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功