`
zhouyancheng
  • 浏览: 7241 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

哈夫曼总结

 
阅读更多
哈夫曼树总结:
    在C++中我们已经学过了树,这里我们简单的回顾一下树
     1.树的几个属性
         树的深度:树的根节点到每个叶子节点路径数最多的那一条分支的路径数
         树的高度:树的深度加1.
         叶子节点:没有子节点的节点
     2.树的遍历方法:
         先序遍历:先中,再左,后右。
         中序遍历:先左,再中,后右。
         后序遍历:先左,再右,后中。
         层次遍历:从根节点开始,从上至下,从左至右,一次遍历树。
     3.最优二叉树(哈夫曼树):
          权值路径最小的二叉树叫最优二叉树。可以用于huffman压缩。
     4.huffman压缩的原理:
           在生活中,我们使用的文字是可以反复使用的,并且在一篇文章中,可能一个字符出现多次,所以我们可以利用这一
       原理将字符用01串代替,当要使用时我们在将其还原,这样,我们就可以把文件压缩。
     5.huffman压缩的步骤:
          a 读出文件,将要压缩的文件一个一个字节的读取出来,并且统计每个字节的权值即每个字节出现的次数,然后根据所            得到的次数进行排序:
            (我们可以建一个数组,当出现的字符的ASIC值等于数组下标时,该数组里面的值加一。这里排序可以用优先队列)
          b 根据优先队列所排序的到的次数构建哈夫曼树。(优先队列中存储的是一个节点,包括它的ASIC码值和出现的次数)
                         
          c 获取每个字符的哈夫曼编码,得到码表。
          d 写文件:
                (1)写入信息头:
                        写入码表:写入时每次写入八位,如果字符的码值不足八位,则将其补足八位(字符,码值,补0)
                                  并且所有的码表值之和也要是8的整数倍,如果不是,则补足为8的整数倍
                        写入文件信息:将问价内容根据码表转换为01窜,写入文件,这样就实现了文件的压缩。




分享到:
评论

相关推荐

    哈夫曼树总结习题学时PPT课件.pptx

    哈夫曼树总结习题学时PPT课件.pptx

    实验报告 哈夫曼树及哈夫曼编码

    利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本,试设计一个哈夫曼编码系统。

    数据结构哈夫曼编码实验报告.doc

    数据结构实验报告 ―― 实验五 简单哈夫曼编/译码的设计与实现 本实验的目的是通过对简单哈夫曼编/译码系统的设计与实现来熟练掌握树型结构在 实际问题中的应用。此实验可以作为综合实验,阶段性实验时可以选择其中...

    哈夫曼编码器设计实验报告.zip_slidefi3_哈夫曼编码_哈夫曼编码器_对一段数据序列进行哈夫曼编码

    要求对一段数据序列进行哈夫曼编码,使得平均码长最短,输出各元素编码和编码后的数据序列。 ①组成序列的元素是[0-9]这10个数字,每个数字其对应的4位二进制数表示。比如5对应0101,9对应1001。 ②输入数据序列的...

    哈夫曼编码实现对文件的加密解密

    语言:C++ 软件:vs2019 可以对.txt文件内容进行加密,但是加密字符仅限于ascii表里的字符, 这只是提供一个思路,学会了代码可以自定义编码规则;

    哈夫曼压缩与解压文件课程设计(代码+实习报告)

    通过自定义算法创建哈夫曼树和编码,对文件进行二进制操作实现压缩和解压。

    哈夫曼编码实验报告.docx

    1、任务描述 实现文件中数据的加解密与压缩:将硬盘上的一个文本文件进行加密,比较加密文件和原始文件的大小差别;对加密文件进行解密,比较原始文件和解码文件的内容是否一致。... //哈夫曼树 struct fact /

    哈夫曼(数据结构课程设计)代码及报告和PPT

    哈夫曼(数据结构课程设计)代码及报告和PPT 目 录 1需求分析 1 1.1 课题来源 1 1.2 问题描述 1 1.3 课程设计的任务及要求 1 1.4 课程设计的思想 2 1.5 软件运行环境及开发工具 2 ...总结 21 致 谢 22 参考文献 23

    哈夫曼编码译码--数据结构

    哈夫曼编码译码 包括默认编码 和 自定义编码 数据结构课程设计 一、题目: 哈夫曼编码/译码的设计与实现 二、目的与要求 1、目的: 通过布置具有一定难度的实际程序设计项目,使学生进一步理解和掌握课堂上所学...

    哈夫曼编码与唯一可译码

    信息论与编码课程中的哈夫曼编码与唯一可译码的课程设计过程代码及总结

    压缩软件(哈夫曼算法实现) 项目总结

    NULL 博文链接:https://javaprince.iteye.com/blog/839949

    Java哈夫曼编码的文件的压缩与解压.docx

    //根据编码扫描到对应的ASCLL码对应的字符 List<Byte> list = new ArrayList(); for (int i = 0; i (); ) { int count = 1; boolean flag = true; Byte b = null;... String key = stringBuilder.substring(i, i +...

    Xb17680214+荣辰辰+02+香农范诺和哈夫曼编码.docx

    此word为本人原创,文档内容为:香农范诺编码和哈夫曼编码的matlab实现。word为实验报告形式,内附两种编码原理,matlab实现代码,运行截图以及现象问题总结。希望可以帮到有需要的小伙伴,谢谢!

    哈夫曼编码实验报告(3).doc

    实验报告与总结 一、实验目的 1. 掌握哈夫曼编码原理; 2. 熟练掌握哈夫曼树的生成方法; 3、理解数据编码压缩和译码输出编码的实现。 二、实验要求 实现哈夫曼编码和译码的生成算法。 三、实验内容 先统计要压缩...

    哈夫曼编码-译码器实验报告

    字符及相应权值的输入有三种方式:从文件读入、手动输入、由电文随机生成。电文编码及译码翻译均直接从文件读入,电文内容根据权值有所限定,仅...输出:将哈夫曼树、电文编码及译码均输出到文件,哈夫曼编码输出到屏幕

    哈弗曼压缩总结

    NULL 博文链接:https://qc-aion.iteye.com/blog/903422

    数据结构与算法分析实验报告.doc

    《数据结构与算法分析》实验报告 姓名 学号_ _____ __年 __月__ __日 上机题目:以静态链表为存储结构,编写给定权值{7,19,2,6,32,3}构造哈夫曼树的 算法。 (输出以存储结构表示或以树型显示(90度旋转)) 需求分析 ...

    数据结构总结(自学、期末复习或考研备用).pdf

    、广义表、第六章树和二叉树、二叉树、二叉树的遍历、线索二叉树、树和森林的表示方法、树、森林与二叉树互换、哈夫曼树与哈夫曼编码、哈夫曼树、哈夫曼编码:、第七章图、图的存储结构:、图的遍历、深度优先遍历(DFS...

    经典数据结构和算法总结

    包含了各种经典的数据结构和算法的总结(描述 + C++代码),例如:链表,字符串,二叉树,哈夫曼树,图,查找,排序等。

    数据结构课程设计报告哈夫曼(Huffman)编/译码器

    一、题目的内容及要求 2 1.问题描述 2 2.任务要求 2 3.测试数据 2 二、需求分析 3 三、概要设计 4 1.编码步骤 4 2.实现方法 4 四、详细设计 5 五、源代码 11 六、运行结果及分析 21 七、收获及体会,总结 24

Global site tag (gtag.js) - Google Analytics