数据结构 课程设计报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

数据结构课程设计

数据结构课程设计报告

题目: 哈夫曼树和编码应用

学生姓名:学号:班级:指导教师:

2011年 6 月 3日

1

数据结构课程设计

目录

课程设计目的 3

课程设计题目 3

需求分析 4

设计原理 4

系统功能框架图 5

流程图 6

设计思路 7

主函数

创建哈夫曼树

输出哈夫曼树

对哈夫曼树进行编码

译码

程序源代码 8

运行结果 13

实验心得 21

2

数据结构课程设计

一、课程设计目的

本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。

学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。

二、课程设计题目--哈夫曼树和编码应用

从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树的存储结构;

利用已经建好的哈夫曼树(如不在内存,则从文件htmTree中读入),对给定的n个字符正文进行编码,并输出每个字符的编码。

利用已建好的哈夫曼树,对给定的一个哈夫曼编码进行译码,判断此编码对应的字符序列,并输出结果。

三、需求分析

1、利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(既可以双向传输信息的信道),每端都需要一个完整的编/译码系统。本次设计就是为这样的信息收发站写的一个哈夫曼的编/译码器。

本实验要求:

2、本演示程序中,用户可以输入键盘中的任意字符,长度为任意长,字符输入顺序不限,且允许出现重码

3、演示程序以用户与计算机的对话方式执行,即在计算机终端上显示“提示信

3

数据结构课程设计

息”之后,由用户在键盘上输入演示程序中规定的运算命令,相应的输入数据

(可虑去输入中的非法字符)和运算结果显示在其后。

4、在本系统中,用户可以对任意字符串进行编码/译码。

5、程序执行的命令包括:

创建哈弗曼树

输出哈夫曼树

对哈夫曼树进行编码

输出哈弗曼编码

译码

退出(Q)6、测试数据:

(1)利用教科书例6-31中的数据调试程序。

(2)权值:1、3、5、7

四、设计原理

将建立哈夫曼树、实现哈弗曼编码、哈弗曼译码都定义成类成员函数,然后在主函数中调用它们。

建立哈夫曼树时,将哈夫曼树的结构定义为一个类的一维数组,类成员为权值、双亲、左孩子、右孩子、字符、编码、编码开始的位置,还有各项功能函数。用一个数组类hftree[]存储。

要实现哈夫曼编码,只要在所创建的哈夫曼树上进行二进制编码:往左

走,编码为0,往右走编码为1,然后将从根结点到树叶的所有0、1排列起来,则得到该树叶的哈弗曼编码。用一个数组类code[]存储

哈夫曼译码,就是将输入的编码还原成对应的字符。

4

数据结构课程设计

五、系统功能框架图

主函数

Switch选择

ase1

ase2

ase3

ase4

ase5

ase6

创建哈夫曼树

输出哈夫曼树

对哈夫曼

树进行编码

输出哈夫曼树编码

译码

退出程序

程序流程图:

5

数据结构课程设计

开始

Y

输入所需要执行的功能ch

N N N N N

ch=1

Y

ch=2

Y

ch=3

Y

ch=4

Y

ch=5

Y

ch=6

内存

输入所创建的哈夫曼树

内存 内存

输入需要进行译码

内存 的数据 N

读入数据输出哈夫

曼树数据对哈夫曼树进行编码

读入数据

输出哈弗曼编码数据

内存

对哈夫曼树进行译码

b=3

Y

结束

6

数据结构课程设计

六、设计思路:

根据题目的要求,在这个程序的设计中,我们要创建哈夫曼树,还要对哈夫曼树进行编码和译码,所以我运用了类,类的成员函数有结点的双亲结点,左、右孩子结点,权值,数据,编码和各种功能函数。然后运用所学的数据结构中的有关哈夫曼树的知识完成该程序的设计。

主函数

用while函数实现窗口选择界面的循环。再构建一个switch的选择,根据用户对功能的需要,进入具有不同功能的函数,每一个case选择后都以break跳出。

最后当输入字符为6时结束,while的界面循环。结束程序。

创建哈夫曼树

输入权值、字符之后,因为分左右孩子,所以定义整型变量p1,p2分别指向两个权值最小位置,定义整型变量s1,s2分别代表两个最小权值。利用for循环选择没有双亲结点的权值与最小权值s1进行比较,如果小于s1,则将其权

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档