利用实现的最小堆实现霍夫曼编码,利用霍夫曼编码实现文件压缩和解压。 包括最小堆,霍夫曼编码,解压,压缩四个部分,代码功能完善,对ASCII码英文文本有1.8压缩率。使用C++编写。
2021-11-02 17:01:03 8KB 霍夫曼编码 文件压缩
1
实现原理    读取文件,统计字符出现次数为权值,构建哈夫曼树,获取每个字符的哈夫曼编码,写入文件。 压缩文件头定义 type compressHead struct { srclen, dstlen, keymapLen uint32 //源文件字符个数 压缩文件字符个数 哈夫曼编码字符映射个数 patchBit uint8 //压缩后不足8bit补0个数 keysMap map[interface{}]uint32 //字符统计构建哈夫曼树 } 压缩实现过程如下 //按照小端模式写入文件 func
2021-10-27 18:56:53 32KB 字符 文件压缩 算法
1
使用小顶堆,哈夫曼树,实现一个简单的文件压缩程序
2021-01-19 11:23:48 4KB 文件压缩
1
用数据结构的Huffman编码来实现对文件进行压缩,是北邮数据结构的大作业!
2020-01-03 11:42:47 525KB 编程 Huffman编码 文件压缩
1
综合实验: 1. 问题描述 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站编写一个哈夫曼码的编/译码系统。 2. 基本要求 一个完整的系统应具有以下功能: (1) I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。 (2) E:编码(Encoding)。利用已建好的哈夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。 (3) D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件Textfile中。 (4) P:印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrin中。 (5) T:印哈夫曼树(Tree printing)。将已在内存中的哈夫曼树以直观的方式(比如树)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint 中。 3. 测试数据 用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:“THIS PROGRAME IS MY FAVORITE”。 字符 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
2019-12-21 22:14:23 140KB C++ 哈夫曼树 文件压缩解压
1
数据结构课程设计用哈夫曼编码实现文件压缩: 一、实验题目: 用哈夫曼编码实现文件压缩 二、实验目的: 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.压缩文件
2019-12-21 21:28:50 433KB 哈夫曼 文件压缩 数据结构 代码+报告
1