摘要: 一、什么是栈? 栈(stack)又叫先进后出表,它是一种运算受限的线性表。它只允许在表的一端进行插入和删除操作,我们称之为栈顶,相对另一端称为栈底。 我们可以通俗一点,将栈比喻为一个垃圾桶,垃圾桶底就类似我们的栈底(bottom),垃圾桶口就类似我们的栈顶(top),当有第一个垃圾扔进去时肯定在最底 阅读全文
posted @ 2020-12-03 21:44 bug_easy 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 一、定义 什么是队列?队列(queue)又叫先进先出表,它是一种运算受限的线性表。其限制是只允许在表的一端进行插入数据和另一端取数据。插入数据的一端是队尾,取数据的一端是队头。 队列的数据结构:数组或者链表实现 队列的常用场景:生产者生产数据放入队列缓存,消费者去消费数据。 二、循环队列 普通的队列 阅读全文
posted @ 2020-12-02 20:34 bug_easy 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 一、什么是LRU 在了解什么是LRU算法时,得先清楚软件有哪些缓存,软件缓存分为: 1、内存缓存; 2、数据库缓存; 3、网络缓存; 速度依次减慢,缓存到内存中的数据,长时间可能会有一些无用的数据占用内存甚至导致内存雪崩的发生,为了解决这些,产生了LRU(Least Recently Used)算法 阅读全文
posted @ 2020-11-30 23:39 bug_easy 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 一、什么是链表 定义:链式存储结构的特点是用一组任意的存储单元存储线性表的 数据元素,这组存储单元可以是连续的,也可以是不连续的。 物理存储结构如下:图中每一个节点均代表存储的数据,并且都包含该节点的下一个节点的位置信息。 二、链表的分类 我们可以把链表分为3类: 1)单链表 : 链表中的元素节点只 阅读全文
posted @ 2020-11-30 23:22 bug_easy 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 前面一节我们已经讲过了顺序表的ArrayList,如果有兴趣的同学可以看上一节(https://www.cnblogs.com/zhengxc0325/p/14056708.html),这一章我们着重讲顺序表的另外一种LinkedList。 一、前提 在剖析LinkedList的源码前,需要读者具备 阅读全文
posted @ 2020-11-30 16:51 bug_easy 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 一、什么是顺序表 在了解顺序表之前,需要先了解什么是顺序表?顺序表是线性表的一种,线性表分为顺序表和链表。其中顺序表在java中又分为数组(最简单的顺序表)和ArrayList。为什么我们称其为顺序表呢?原因顾名思义是该数据结构在逻辑上和物理结构上的存储顺序均是连续的。下面,我们就以一张图来说明什么 阅读全文
posted @ 2020-11-29 19:24 bug_easy 阅读(268) 评论(0) 推荐(0) 编辑