数据结构
文章平均质量分 57
我是山楂条
这个作者很懒,什么都没留下…
展开
-
数据结构——数组队列
数据结构 - 数组队列上一篇博客我们提到了数据结构中访问速度最快的数组,但是数组在使用时有一些限制数组在定义的时候就必须定义存储的类型和大小,定义完成之后不能修改数据类型和大小,而我们在大多数实际使用时,对于将要存储的数据的类型以及大小是不确定的如果数组设置大了就会浪费内存,小了又会不够用为了利用到数组访问速度快这个优点的同时又想实现我们实际使用时的需求虽然Java的给我们提供...原创 2018-08-27 19:45:02 · 178 阅读 · 0 评论 -
数据结构——数组
数据结构 - 数组1.数组数组的基本特点:1.数组是一个容器,可以存储Ñ个同一类型的数据2.数组是一种数据结构,是数据结构中访问速度最快的3.数组属于引用数据类型,即数组名中存储的是内存的首地址4.数组本身只有长度属性(数组中能存储的数据个数),但是有从对象父类继承的属性和方法5.数组可以分为一维数组,二维数组,......数组在内存中的存储:一维数组:数组...原创 2018-08-26 15:53:59 · 234 阅读 · 0 评论 -
数据结构——链表(单向链表)
数据结构——链表(单向链表)前面的博客我们提到了数据结构中的数组和数组队列,数组访问速度快但是有存储类型和存储个数的限制数组队列虽然解决了上面两个问题,但是在指定位置增删元素不方便,需要移动大部分元素为了适应某些特定场景的需求,我们可以使用链表这一在内存中非线性存储的数据结构链表的实现其实并没有想象的复杂,具体关系如上图单向链表的实现首先我们需要定义一个节点类,需要有数...原创 2018-08-29 17:16:17 · 304 阅读 · 1 评论 -
数据结构 - 链表(双向链表)
数据结构 - 链表(双向链表)上一篇博客中我提到了如何实习一个自定义的单向链表,其实单向链表在指定位置增删数据的速度还是有所限制,我们可以使用双向链表实现更快的增删操作今天我们来实现一个双向链表双向链表的实现原理与单向链表基本一致,每个节点的属性除了一个指向下一个节点之外多了一个指向上一个节点的属性上图给出的是Java给我们提供的LinkedList类的结构图注:本文中所写...原创 2018-08-30 14:28:23 · 278 阅读 · 1 评论 -
数据结构——简单表达式二叉树实现
数据结构——简单表达式二叉树实现今天我们来了解——树这种结构树由根节点出发有若干个节点,每个节点又有若干个子节点,这样由上而下构成一个类似树根的结构其中最具有代表性的莫过于二叉树了今天我们来实现一个最简单的表达式二叉树比如:4+23*56/2-0我们先需要一个Node节点类具有左右两个子节点属性,还有一个数据域public class Node { privat...原创 2018-09-05 21:27:20 · 1075 阅读 · 1 评论 -
数据结构——哈夫曼二叉树
数据结构——哈夫曼二叉树上一篇博客中我们实现了一个简单的表达式二叉树今天我们来实现一个哈夫曼二叉树又称最优二叉树哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。实现原理其实很简单对于某一些场景来说,某一个区间段情况出现的机率是大很多的,比如成绩处于中游水平的人肯定是占大多数的,因此我们在取得这些数据时,如果按等概率去读取会影响程序效率所以我们可以利用哈夫曼二叉树来实现这...原创 2018-09-05 23:14:38 · 784 阅读 · 2 评论 -
基于哈夫曼二叉树的文件压缩实现
基于哈夫曼二叉树的文件压缩实现上一篇博客中我们提到如何将一个字符串建立哈夫曼二叉树那么我们实现文件压缩其实已经成功了一半哈夫曼二叉树可以得到哈夫曼编码,哈夫曼编码具有不重复的特性,我们可以利用这一特性来实现压缩获取哈夫曼编码的规则是:从根节点出发往左就+“0”,往右就+“1”直到找到叶子节点获取哈夫曼编码的方法:/* * 此方法用来得到哈夫曼编码 */ publ...原创 2018-09-06 00:18:35 · 389 阅读 · 1 评论 -
压缩算法——lzw算法实现
压缩算法——lzw算法实现字典压缩的基本原理以色列人Lempel与Ziv发现在正文流中词汇和短语很可能会重复出现。当出现一个重复时,重复的序列可以用一个短的编码来代替。压缩程序重复扫描这样的重复,同时生成编码来代替重复序列。随着时间过去,编码可以用来捕获新的序列。算法必须设计成压缩程序能够在编码和原始数据序列推导出当前的映射。说实话直接用文字来描述其实听起来很迷,直接看图:...原创 2018-09-12 16:56:00 · 14406 阅读 · 5 评论