-
实验内容及要求:
输入符号数(序号用英文字母A, B, C, …表示)以及各符号出现概率(要求符号数不小于10,建议用字符文件实现数据输入),建立Huffman二叉树存储结构,以字符串形式输出各符号对应的二进制哈夫曼编码(建议输出到屏幕和字符文件中以便检验正确性)。
从键盘以字符串形式输入字母组成的符号串,利用已经建立的Huffman编码表在屏幕上输出该符号串对应的二进制Huffman编码串然后对Huffman编码串进行译码并在屏幕上输出译码后的字母符号串(对比是否与原始符 5号串相同)。建议用菜单形式提供功能以实现可多次输入字母符号串及其编码译码结果。
-
实验目的:掌握Huffman编码。
-
数据结构设计简要描述:
霍夫曼树的节点构造以及权重表,符号表,编码表,实际符号数。采用数组的形式来存储所有节点,则要提供左右子树和双亲节点指针。
-
算法设计简要描述:
首先根据算法应该先找到所有根节点中最小的两个组成一棵新树的左右子树,删除这两个节点(用parent为-1来说明为根节点,如不是-1,则为删除),添加新生成的节点即让新树的根节点的parent为-1即可。因此可以遍历要生成节点前的所有节点来不断生成新树,最后形成只有二度节点和零度节点的二叉树。