哈夫曼编码译码(数据结构课程设计)

您所在的位置:网站首页 哈设设计 哈夫曼编码译码(数据结构课程设计)

哈夫曼编码译码(数据结构课程设计)

2024-07-01 00:17| 来源: 网络整理| 查看: 265

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