链表实现LRU淘汰算法-笔记
2018-12-23 18:27
204 查看
首先简单介绍下链表
数组需要一段连续的内存空间来存储,而链表可将一组零散的内存块串联起来使用
最常见的链表有:单链表、双向链表、循环链表。链表通过指针将一组零散的内存块串联在一起,其中,内存块称为链表结点,为把所有结点串起来,每个链表结点除了存储数据外,还需要记录下一个结点地址。这个记录下一个结点,地址的指针叫后继指针next。双向链表还有一个前驱指针prev指向前一个结点,因此双向链表比单向链表占用更多内存空间。
那么如何基于链表实现LRU算法呢?
维护一个有序单链表,越靠近链表尾部的节点是越早之前访问的,当有一个新的数据被访问时,从头到尾访问链表。这里有两种可能:
1.此数据已被缓存在链表中了,遍历链表找到此数据将其从位置上删除,并将其插入链表第一个节点。
2.此数据未被缓存在链表中,此时又有两种可能:
①此缓存未满,将数据直接插入链表头。
②此缓存已满,将链表尾最后一个数据删除,并将新数据插入链表头。
相关文章推荐
- 06- 链表(上): 如何实现LRU淘汰算法
- 链表(上):如何用链表来实现LRU缓存淘汰算法?
- 看动画理解「链表」实现LRU缓存淘汰算法
- 数据结构 王争 6 |链表(上):如何实现LRU缓存淘汰算法?
- 算法(第四版)学习笔记之java实现栈和队列(链表实现)
- 数据结构与算法学习笔记——链表部分实现(数组形式)
- 近期最久未使用页面淘汰算法———LRU算法(java实现)
- 如何实现LRU缓存淘汰算法
- 【Leetcode】:LRU Cache_缓存淘汰算法LRU的设计与实现
- LRU缓存淘汰算法分析与实现
- GuavaCache学习笔记一:自定义LRU算法的缓存实现
- 链表及LRU算法实现介绍
- 缓存淘汰算法之LRU实现
- 缓存淘汰算法--LRU算法(java代码实现)
- golang实现LRU缓存淘汰算法的示例代码
- 最近最久未使用页面淘汰算法———LRU算法(java实现)
- 最近最久未使用页面淘汰算法———LRU算法(java实现)
- 数据结构与算法-如何用链表来实现LRU缓存淘汰策略
- 机器学习深度学习基础笔记(2)——梯度下降之手写数字识别算法实现
- CSDN机器学习笔记十二 k-近邻算法实现手写识别系统