韶 关 学 院 学 生 实 验 报 告 册 实验课程名称:数据结构与算法 实验项目名称:实验六 树及其应用 哈夫曼编/译码器 实验类型(打√ ):(基础 、综合 、设计√ ) 院 系:信息工程学院计算机系 专 业:***** 姓 名:*** 学 号:***** 指导老师:陈正铭 韶关学院教务处编制 一、实验预习报告内容 预习日期:2007 年 6 月 12 日 实验预习报告内容原则上应包括实验目的、实验所用的主要仪器药品、实验原理与公式、 实验预习疑问等项目。 【实验目的】熟练掌握非线性数据结构二叉树树的操作,熟悉树的各种存储结构特性,以及如何应用树解决具体问题。 【需要分析】利用哈夫曼编码进行通信可以大大提高信道利用率,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。试为这样的信息收发写一个哈夫曼编/译码系统,要求具备以下功能:初始化、编码、译码、印代码文件、印哈夫曼树。 一个完整的哈夫曼码的编译码系统系统应具有以下功能: (1) I: 初始化(Initialization)。从终端读入字符集大小 n,几个字符和 n 个权值,建立哈夫曼树,并将它存于文件 hfmtree 中。 (2) C: 编码(Coding)。利用已建好的哈夫曼树(如不在内存,则从文件 hfmtree 中读入),对文件 tobetrans 中的正文进行编码,然后将结果存入文件 codefile 中。 (3) D: 译码(Decoding)。利用已建好的哈夫曼树将文件 codefile 中的代码进行译码,结果存入文件 textfile 中。 (4) P: 打印代码文件(Print)。将文件 codefile 以紧凑格式显示在终端上,每行 50 个代码。同时将此字符形式的编码文件写入文件 codeprint 中。 (5) T: 打印哈夫曼树(Tree printing)。将已在内存中的哈夫曼树以直观的方式(数或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件 treeprint 中。 【软件平台】 Windows 2000,Visual C++ 6.0 或 WINTC 【概要设计】 ADT Array { 数据对象: D 是具有相同特性的数据元素的集合。 数据关系: 若 D 为空集,则称为空树; 否则: (1) 在 D 中存在唯一的称为根的数据元素 root, (2) 当 n>1 时,其余结点可分为 m (m>0)个互不相交的有限集 T1, T2, … , Tm, 其中每一 棵子集本身又是一棵符合本定义的树,称为根 root 的子树。 基本操作: Status initHTree(HuffmanTree &T,int n)//初...