1、 数据结构课程设计报告 题目题目 : 哈夫曼树的哈夫曼树的应用应用 系 部 名 称系 部 名 称 : 通信工程通信工程 专 业 名 称专 业 名 称 : 通信工程通信工程 班班 级级 : 通工通工 0 0714714 一、一、 课程设计目的课程设计目的 1 综合应用所学的计算机基础知识和所掌握的程序设计语言; 2 自行设计并实现一个较为完整的对文本文件进行编码、解码的设计与开发; 3 通过系统分析、系统设计、编程实现,写实验报告等环节, 初步掌握软件系统的设 计方法和步骤; 4 锻炼大家灵活运用程序语言进行软件开发的初步能力, 提高分析问题和解决问题的能 力; 5 提高程序设计水平。 二、二、
2、课程设计内容课程设计内容 设计一个哈夫曼树的应用程序来完成哈夫曼树的简单应用,要求实现如下功能: 1 读取文本文件,并统计文件中字母个数 2 建立 huffman 树 3 对文件进行 huffman 编码 4 对文件进行 huffman 解码 三、需求分析三、需求分析 在数据通信中通常采用 0、1 序列表示不同的字符:在发送端需要将待发送的字符 序列转换成二进制的 0、1 序列,此过程即编码;在接收端有需要将已接收的 0、1 序列 转换成对应的字符序列,此过程即解码。众所周知,字符集中的每个字符使用的频率是 不等的。 如何对字符集设计一套二进制编码, 使得采用这种编码进行通信时总的信息传 输量
3、最小。 为了在字符之间省去不必要的间隔符号, 希望每个字符的编码在系统识别时 可以唯一确定,即任意字符的二进制编码不可能解释为其他字符编码的前缀,Huffman 就此给出了著名的 Huffman 算法,形象地用一棵二叉树给出了字符最优编码规则,即 哈夫曼编码。 用哈夫曼树构造最优编码是信息传输和数据压缩等通信技术的重要的基本 思想方法。 四、概要设计四、概要设计 1、方案设计: 哈夫曼树的应用程序要求依次实现许多功能, 可遵循结构化程序设计思想来进行本 程序的设计-自顶向下, 逐步细化, 也就是将程序设计任务划分成许多容易解决的小 的子任务,即分解出子功能模块分别进行设计。 2、系统结构图(功
4、能模块图) : 3、功能模块说明: 读取文本信息:读取源文本文件,并统计其中所有字符的种类和频率; 建哈树:将读取模块统计出的字符的种类和频率作为叶子节的种类和权 值,建立哈夫曼树; 编码:利用建树模块建立的哈夫曼树求出源文件中各个字符对应的编 码,并将其存入编码文件,即实现源文件的哈夫曼编码; 压缩:每八位 0、1 代码转化为 0255 的十进制数,并转化成对应的字符 写入文件; 解压缩:从压缩文件中读取字符并转化为相应的 ASC码,再转化为八 位 0、1 代码; 译码:根据文件中的 0、1 代码和哈夫曼编码转化为相应的字符; 比较文本: 比较解码文件中的文本内容与源文件中的文本内容是否一致。 4、模块流程图: 哈 夫 曼 树 的 应 用 主 程 序 读取文本信息 建哈树 编码 解码 比较文本 显示 failure 提示 0 统计用节点初始化 cc=fgetc(fp) ch=EOF 真 cc!=EOF 假 (*l)=0? 假 j=0? 真 = (*l) 真 j 假 ch=lettersi.le