文件压缩
开发平台:VS2015
开发技术:堆,哈夫曼树
项目描述:
1.统计文件中字符出现的次数,利用数据结构中的堆建造Huffman树,字符出现次数多的编码短,出现次数少的编码长;
2.根据...
分类:
其他好文 时间:
2016-09-08 11:24:18
阅读次数:
249
在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN) 树和哈夫曼编码。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如 JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。哈夫曼树又称最优二叉树, 是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中 ...
分类:
其他好文 时间:
2016-09-07 22:25:57
阅读次数:
219
在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN)树和哈夫曼编码。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。 哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有 ...
分类:
其他好文 时间:
2016-08-08 12:28:32
阅读次数:
246
原理:Huffman树的应用:Huffman编码,为出现频率较高的字符指定较短的码字,而为出现频率较低的字符指定较短的码字,可以实现二进制文件的压缩。Heap.h#pragmaonce
#include<vector>
//仿函数
template<classT>
structLesser
{
booloperator()(constT&l,co..
分类:
编程语言 时间:
2016-08-05 01:07:57
阅读次数:
313
习惯了c++的cin.cout之后,也不怎么关注空格,反正cin.cout会自动处理。有一次实验,创建Huffman树,要求输入空格字符,当时就懵逼了.cin咋输入空格呢? 没办法,只能重新用scanf函数了,结果各种悲剧,足足debug一个多小时,这难道就是越学越差劲系列?o(╯□╰)o scan ...
分类:
其他好文 时间:
2016-07-14 01:14:02
阅读次数:
191
#pragmaonce#include"Heap.h"//使用博客实现的堆template<classT>structHuffmanNode//节点的结构信息{ T_weight; HuffmanNode<T>*_parent; HuffmanNode<T>*_left; HuffmanNode<T>*_right; HuffmanNode(constT&weight) :_weight(weight) ,_parent..
分类:
编程语言 时间:
2016-07-11 10:46:05
阅读次数:
214
Huffman树又叫最优二叉树,它的特点是带权路径最短。
Huffman树的一个重要应用是Huffman编码,Huffman编码是长度最短的前缀编码。即给定要传送的字符的权值,根据权值求出Huffman编码,它一定是前缀编码(指任意字符的编码都不是另一个字符编码的前缀),并且在传送过程由字符组成的文字时,编码长度最小。
因此Huffman编码可以对文字进行加密解密还有压缩。加密的工作就是...
分类:
其他好文 时间:
2016-07-03 13:14:19
阅读次数:
192
Huffman树是完全二叉树,权重较大的节点距离根较近。
Huffman编码是一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字。...
分类:
编程语言 时间:
2016-06-29 11:32:54
阅读次数:
241
Huffman树又称最优树,是一类带权路径长度最短的树,带权路径长度为从该节点到树根之间的路径长度与节点上权值的成积。 那么如何构建一个Huffman树呢?就需要Huffman算法 1、利用给定的n个权值构成有n个二叉树的集合F,每个二叉树就只有一个带权值的根节点,其左右子树都为空。 2、选取两课根 ...
分类:
其他好文 时间:
2016-06-28 23:34:04
阅读次数:
228
堆+huffman树。 huffman二叉树构造法就是每次把最小的俩个合并起来,构成一个树。 但k叉树每回减少(k-1)个,可能最后会有一个坑位被浪费掉,导致答案增加(用心去感受) 于是我果断回忆去年他们游记里面写到,多余的先合并下。。 然后1A了。。。 #include #include #inc... ...
分类:
其他好文 时间:
2016-06-28 09:23:48
阅读次数:
189