数据结构课程设计报告 1 哈夫曼编\译码的设计与实现 一、简介 1.设计目的: 通过对简单哈夫曼编/译码系统的设计与实现来熟练掌握树型结构在实际问题中的应用。 2.问题的描述: 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。系统应该具有如下的几个功能:接收原始数据、编码、译码、打印编码规则。 二、数据结构的设计: 1. 哈夫曼结点结构体: typedef struct HtNode { int weight; int parent, lchild, rchild; }HtNode; 2. 哈夫曼树结构体: typedef struct HtTree { struct HtNode ht[MAXNODE+1]; int root; 数据结构课程设计报告 2 } HtTree, *PHtTree; 三、功能(函数)设计: 总体上划分为四个模块,具体功能描述如下: 1. 初始化功能模块:接收输入信息,并正确输出 2. 建立哈夫曼树的功能模块:按照构造哈夫曼树的算法构造哈夫曼树,将HuffNode数组中的各个位置的各个域都添上相关的值 3. 哈夫曼编码的功能模块:根据输入的相关字符信息进行哈夫曼编码,然后将结果存入,同时将字符与0、1 代码串的一一对应关系打印到屏幕上。 4. 译码的功能模块:接收需要译码的0、1代码串,按照哈夫曼编码规则将其翻译成字符集中的字符所组成的字符串形式,将翻译的结果在屏幕上输出 四、界面设计: 该界面操做简单,内容详细,便于程序使用者根据提示轻松上手。简洁明朗是该界面最大的特点。 哈夫曼编/译码 请逐个输入结点和结点的权值 >>>按Enter键开始 根据此提示界面进入程序使用阶段。 数据结构课程设计报告 3 请输入结点个数: 根据用户输入结点个数,动态输入并存储字符及权值然后输出字符与0 、1 代码串的对应关系。 进入以下界面,进行后续操作 1----------------------------编 码 2----------------------------译 码 3----------------------------重新输入权值; 0----------------------------退 出 用户键入“0”,即可出编码译码操作 五、程序设计: 1. 函数功能说明及其程序流程图的描述: 1>:main函数:控制整个程序的整个流程。程序流程描述:先调用InitHuffman函数将数据存入文件,若数据已存在,则直接读取数据进行哈夫曼编码。然后再调用各函数,完成课程设计的要求。 2>:Select函数:把输入的字符按权值大小排序。...