哈夫曼编码译码(数据结构课程设计) |
您所在的位置:网站首页 › 哈设设计 › 哈夫曼编码译码(数据结构课程设计) |
1.需求分析
1.1问题描述
设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。 1.2 基本要求将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中) 分别采用动态和静态存储结构 初始化:键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树; 编码:利用建好的哈夫曼树生成哈夫曼编码; 输出编码; 设字符集及频度如下表: 字符 空格 A B C D E F G H I J K L M 频度 186 64 13 22 32 103 21 15 47 57 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 1.3进一步完成内容译码功能; 显示哈夫曼树; 界面设计的优化。 2.概要设计 2.1存储结构设计typedef struct HTNode{ char c; int weight; int parent,lchild,rchild; }HTNode,*HuffmanTree; 定义一个结构体表示哈夫曼树,结构体中包括输入的字符、该字符的权值,以及结点的双亲、左孩子、右孩子的下标变量。将哈夫曼树的各结点存储在由HuffmanTree定义的动态分配的数组中。 typedef char **HuffmanCode; 由于每个哈夫曼编码是变长编码,使用一个指针数组来存放每个字符编码串的首地址,各字符的哈夫曼编码存储在由HuffmanCode定义的动态分配的数组HC中,数组的0号单元不使用,从1号单元开始使用。 2.2功能算法设计 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |