1、 计 算 机 工 程 学 院 课程设计报告 课程名称:课程名称:数据结构课程设计 设计题目设计题目: 哈夫曼编码器 院院 系:系: 计算机工程学院 班班 级级: 组组 别:别: 学生姓名学生姓名: : 学学 号号: 起止日期起止日期: 2011 年 12 月 26 日 31 日 目目 录录 1、设计目的、设计目的 2 2、需求分析、需求分析 3 2.1 选题的意义及背景 2.2 基本要求 2.3运行环境及开发工具 3、概要设计、概要设计. 错误!未定义书签。 3.1 设计思想 3.2 程序框图 3.3 方法及原理 3.4 主要数据结构 4、详细设计、详细设计 7 4.1 创建哈夫曼树 4.2
2、编码 4.3 源程序 5、调试与操作说明调试与操作说明 . 14 6、总结、总结与与体会体会 15 7、致谢致谢 16 设计目的设计目的 1、 利用学过的数据结构知识设计一个简单的哈夫曼编/译 码器系统。 2 2、了解并掌握数据结构与算法的设计方法,具备初步的独立分 析和设计能力; 3、初步掌握软件开发过程的问题分析、系统设计、程序编码、 测试等基本方法和技能; 4、提高综合运用所学的理论知识和方法独立分析和解决问题的 能力; 5、训练用系统的观点和软件开发一般规范进行软件开发,培养 软件工作者所应具备的科学的工作方法和作风。 2 2 需求分析需求分析 2.1、选题的意义和背景选题的意义和背景
3、 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信 息传输时间,降低传输成本。但是,这是要求在发送端通过一个编码 系统对待传数据预先编码,在接收端将传来的数据进行译码(复原) 。 对于双工信道(即可以双向传输信息的信道) ,每端都需要一个完整 的编/译码系统。 2.2、基本要求、基本要求 (1)初始化:键盘输入字符集大小 n、n 个字符和 n 个权值,建立 哈夫曼树; (2)编码:利用建好的哈夫曼树生成哈夫曼编码; (3)输出编码; (4)设字符集及频度如下表: 字 符 A B C D E F G H I J K L M 频 度 186 64 13 22 32 103 21 15 47 5
4、7 1 5 32 20 字 符 N O P Q R S T U V W X Y Z 频 度 57 63 15 1 48 51 80 23 8 18 1 16 1 2.3、运行环境及开发工具、运行环境及开发工具 本程序采用 Visual C+6.0 编程实现。 3 概要设计概要设计 3.1 设计思想设计思想 本程序的主要功能是实现对用户输入的字符编码,然后 再把编码结果翻译成原字符。但在进行这些操作之前必须 做一项工作,就是创建 Huffman 树。哈夫曼树又称最优二 叉树,是一种带权路径长度最短的二叉树。所谓树的带 权路径长度,就是树中所有的叶结点的权值乘上其到根 结点的路径长度(若根结点为 0 层,叶结点到根结点的 路径长度为叶结点的层数) 。树的带权路径长度记为 WPL=