首先介绍几个名词。

定长编码:像ASCII编码那样。

变长编码:单个编码长度不一致,可以根据整体出现频率来调教。

前缀码:没有任何码字是其他码字的前缀。

下面给出一个赫夫曼树。

规定:左孩子标记0,右孩子标记1。

所以编码:

A(0)

B(10)

C(110)

D(111)

所以这也是一个前缀编码视图。

下面是部分代码:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include "huffman.h"int main(void)
{//We build the tree depending on the stringhtTree *codeTree = buildTree("beep boop beer!");//We build the table depending on the Huffman treehlTable *codeTable = buildTable(codeTree);//We encode using the Huffman tableencode(codeTable,"beep boop beer!");//We decode using the Huffman tree//We can decode string that only use symbols from the initial stringdecode(codeTree,"0011111000111");//Output : 0011 1110 1011 0001 0010 1010 1100 1111 1000 1001system("pause");return 0;
}

提示:此代码是网教小甲鱼提供,本人做了一点点改动。此代码比较多,在此不再讲述。需要的网友,下载后单步调试。

IDE为vs2013

下载地址如下:

http://download.csdn.net/detail/qq78442761/9759984

运行结果:

6.6.2赫夫曼编码相关推荐

  1. 赫夫曼编码(基于赫夫曼树的实现)

    上一篇文章中我们探讨了赫夫曼树的基本原理和构造方式,而赫夫曼编码可以很有效地压缩数据(通常可以节约20%-90%的空间,具体压缩率依赖于数据的特性). 名词:定长编码,边长编码,前缀码(装B用的) 定 ...

  2. 算法系列之使用赫夫曼编码的实战应用【对文件进行压缩、解压缩】

    1.首先在准备一张图片 2.测试压缩效果 3.测试解压缩效果 将桌面a.jpg删除 4.源代码 package com.zsh.algorithm.tree;import java.io.*; imp ...

  3. 算法系列之赫夫曼编码实战一【数据压缩、数据解压】

    1.何谓赫夫曼编码? 2.赫夫曼数据压缩 3.赫夫曼数据解压 4.全代码 1.何谓赫夫曼编码? 哈夫曼编码是一种编码方式,哈夫曼编码是可变字长编码的一种.Huffman于1952年提出一种编码方法,该 ...

  4. 《数据结构与算法》课程设计报告——赫夫曼编码/译码器

    题目 赫夫曼编码/译码器 实验目的 本课程设计是为了让同学们了解学习数据结构的作用和意义.数据结构是计算机科学与技术专业的专业基础课,是十分重要的课程.所有的计算机系统软件和应用软件都要用到各种类型的 ...

  5. 赫夫曼编码-译码器(Huffman Coding)

    基本概念 哈夫曼编码(Huffman Coding):又称霍夫曼编码.赫夫曼编码-,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种.Huffman于1952年提出一种编码方法,该方法完全依据 ...

  6. JAVA——赫夫曼编码-译码器(Huffman Coding)

    基本概念 哈夫曼编码(Huffman Coding):又称霍夫曼编码.赫夫曼编码-,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种.Huffman于1952年提出一种编码方法,该方法完全依据 ...

  7. C++——赫夫曼编码-译码器(Huffman Coding)

    基本概念 哈夫曼编码(Huffman Coding):又称霍夫曼编码.赫夫曼编码-,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种.Huffman于1952年提出一种编码方法,该方法完全依据 ...

  8. 《数据结构与算法》课程设计任务书——赫夫曼编码/译码器

    <数据结构与算法>课程设计 (2019/2020学年第一学期) 指导教师:孙麒.霍戌文 <数据结构与算法>课程设计 任务书 <数据结构与算法>是计算机科学与技术专业 ...

  9. 利用赫夫曼编码进行数据解压

    基本概念 代码实现 package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStat ...

  10. 算法 - 赫夫曼编码(对字符串进行压缩 与 解压(解码)) - (对文件进行压缩解压)

    1.压缩:使用赫夫曼编码进行压缩 题目 构建赫夫曼树 package tree.huffmantree;import java.util.*;public class HuffmanCode {pub ...

最新文章

  1. CSS3属性之text-overflow:ellipsis,指定多行文本中任意一行显示...
  2. 朴素贝叶斯—疾病的预测
  3. RAC IP 地址修改
  4. java中redis实现篇
  5. sdut1283Five in a Row, Again
  6. 创新数字音频处理技术带来消费电子产品差异化用户体验(转)
  7. FPGA学习---Quartus II新建工程
  8. mysql mvcc 的理解
  9. IDEA设置生成带注释的getter和setter解决方案 (图文教程)
  10. vue组件系列3、查询下载
  11. 彻底解决android读取中文txt的乱码(自动判断文档类型并转码
  12. 网络克隆安装linux系统下载安装,pxe网刻工具_诚龙网刻教程_网络克隆安装windows7...
  13. ESP32-C3入门教程 WiFi篇⑥——基于串口的 WiFi 智能配网
  14. 工程图字体宋体仿宋_宋黑仿变各种字体的审美禀赋
  15. 修改hexo的主题nexT中的Pisces主题宽度
  16. 电商网上购物成为非洲人喜欢的一种新颖购物方式
  17. C语言控制桌面背景图
  18. Jenkins使用问题记录
  19. 大数据专业就业岗位有哪些?
  20. Vmware虚拟机安装Linux系统(cent OS 7 64)

热门文章

  1. @程序员,掌握这四点,想不优秀都难!
  2. 飞鸽传书2007绿色版提供了无限量内部沟通方案
  3. 如何设计通用的回调机制
  4. 程序员只能吃青春饭?老程序员爆料花样出路
  5. 4月1日被愚了吗,我就看看你们都比较都喜欢哪些教程?
  6. code换取微信openid_JSamp;微信_微信授权
  7. 推荐几个单细胞数据分享和展示平台 | 短视频演示
  8. 基于Salmon的转录组批量定量流程和差异分析
  9. Screenium 3 for Mac - 强大的屏幕录制编辑器
  10. 白鹭本地数据存储操作代码实例