数据结构课程设计用哈夫曼编码实现文件压缩:
一、实验题目:
用哈夫曼编码实现文件压缩
二、实验目的:
1、了解文件的概念。
2、掌握线性链表的插入、删除等算法。
3、掌握Huffman树的概念及构造方法。
4、掌握二叉树的存储结构及遍历算法。
5、利用Huffman树及Huffman编码,掌握实现文件压缩的一般原理。
三、实验设备与环境:
微型计算机、Windows 系列操作系统 、Visual C++6.0软件
四、实验内容:
根据ASCII码文件中各ASCII字符出现的频率情况创建Haffman树,再将各字符对应的哈夫曼编码写入文件中,实现文件压缩。
五、概要设计:
1、数据结构类型定义
/*****Huffman结构定义**********/
typedef struct node
{
long w;//w为权值
short p,l,r; //p为parent,l为左孩子,r为右孩子
}htnode,*htnp;//动态分配数组存储哈夫曼树
/*****Huffman编码表结构定义*****/
typedef struct huffman_code
{
unsigned char len;//长度
unsigned char *codestr;
}hufcode;
typedef char **huffmancode;//动态分配数组存储哈夫曼编码表
2、本程序的构成,共有14个函数,一个菜单函数
int initial_files(char *source_filename,FILE **inp,char *obj_filename,FILE **outp);
//1.初始化文件名
char *create_filename(char *source_filename,char* obj_filename);
//2.创建文件名
int compress(char *source_filename,char *obj_filename);
//3.压缩文件
1