PAGE
PAGE 1
数据结构课程设计报告
题 目 哈夫曼编译器
PAGE
PAGE 2
目录
TOC \o "1-3" \h \u 30790 一、课程设计目的 3
14821 二、课程设计的内容 3
11443 2.1、问题描述 3
2428 2.2、基本要求 3
32499 三、 问题描述,解决的方法 3
14532 3.1从键盘读入字符集大小n , 以及n个字符和权值,建立哈夫曼树。 3
17314 3.2利用已建好的哈夫曼树对文件正文进行编码,将结果存入相关文件中。 5
9540 3.3利用已建好的哈夫曼树将编码文件中的代码进行译码,结果存入文件中。 6
14360 3.4输出代码文件,以紧凑格式显示。 7
23841 3.5以直观的方式输出哈夫曼树,同时将此字符形式的哈夫曼树写入文件中。 7
1900 四、 程序模块功能,程序设计组成框图、流程图 8
26252 4.1程序模块功能 8
28821 4.2程序设计框图 8
22504 4.3流程图 9
24212 五、 调试与测试。调试方法,测试结果的分析与讨论,遇到的主要问题及采取的解决措施。 10
28115 5.1调试方面 10
2751 5.2测试结果方面 10
30384 六、测试结果,用几组测试数据进行测试算法设计的正确性 10
17071 6.1第一组数据如下 10
26480 6.2第二组测试数据如下: 14
30305 七、 本次课程设计的心得体会 16
19365 八、 附录:源程序清单 17
一、课程设计目的
数据结构是计算机专业的核心课程,是计算机科学的算法理论基础和软件设计的技术基础,实践性强,课程设计是加强学生实践能力的一个重要手段。课程设计要求学生在完成程序设计的同时能够写出规范的设计报告,培养学生分析问题、解决问题,提高学生软件设计能力。
二、课程设计的内容
哈夫曼编译器
2.1、问题描述
利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。对于双向传输信息的信道,每端都需要一个完整的编译码系统。为这样的信息收发站编写哈夫曼编译系统。
2.2、基本要求
(1)从键盘读入字符集大小n , 以及n个字符和权值,建立哈夫曼树。
(2)利用已建好的哈夫曼树对文件正文进行编码,将结果存入相关文件中。
(3)利用已建好的哈夫曼树将编码文件中的代码进行译码,结果存入文件中。
(4)输出代码文件,以紧凑格式显示。
(5)以直观的方式输出哈夫曼树,同时将此字符形式的哈夫曼树写入文件中。
问题描述,解决的方法
3.1从键盘读入字符集大小n , 以及n个字符和权值,建立哈夫曼树。
a.首先设计一个结构体,成员有权值、左右儿子、以及字符本身,再设计一个输入函数,函数中要求输入字符集大小n,以及这n个字符和他们各自对应的权值。
b.再根据以上的各种输入结合建立哈夫曼树的思想原理建立起哈夫曼树,设计的函数包括有两个,一个是选中最小权值的两棵树,另一个是创建哈夫曼树。
3.2利用已建好的哈夫曼树对文件正文进行编码,将结果存入相关文件中。
a.第一步是要求用户输入待编码文件的路径,再根据路径读取待编码文件里的内容,再利用哈夫曼树将内容编码。
b.将编码的结果存入文件中,文件起名为编码结果.txt,这个工作已经在编码路径的同时并完成了。
3.3利用已建好的哈夫曼树将编码文件中的代码进行译码,结果存入文件中。
a.跟(2)是一样的,先是要求用户输入待译码文件的路径,再根据路径读取待译码文件里的内容,再利用哈夫曼树将内容进行译码,只是这里的待译码文件即是前面的编码结果.txt。
b.在将译码结果打印到窗口的同时写进文件里面,文件命名为译码结果.txt
3.4输出代码文件,以紧凑格式显示。
这一步在将编码或者译码结果进行写文件的同时已经将结果打印到了窗口。
3.5以直观的方式输出哈夫曼树,同时将此字符形式的哈夫曼树写入文件中。
挨个将各个节点的内容的值打印到窗口以及写入文件,文件名为哈夫曼树.txt。
程序模块功能,程序设计组成框图、流程图
4.1程序模块功能
本编译器本人给简单的设计为四个模块,分别是:输入字符相关内容并建立哈夫曼树、根据哈夫曼树对文件内容进行编码、根据哈夫曼树对文件内容进行译码以及退出功能。
4.2程序设计框图
开始
开始
从键盘输入字符相关内容并建立哈夫曼树
编码
译码
退出
4.3流程图
显示译码结果并写入