链表实现LRU淘汰算法-笔记

首先简单介绍下链表

数组需要一段连续的内存空间来存储,而链表可将一组零散的内存块串联起来使用

最常见的链表有:单链表、双向链表、循环链表。链表通过指针将一组零散的内存块串联在一起,其中,内存块称为链表结点,为把所有结点串起来,每个链表结点除了存储数据外,还需要记录下一个结点地址。这个记录下一个结点,地址的指针叫后继指针next。双向链表还有一个前驱指针prev指向前一个结点,因此双向链表比单向链表占用更多内存空间。

那么如何基于链表实现LRU算法呢?
维护一个有序单链表,越靠近链表尾部的节点是越早之前访问的,当有一个新的数据被访问时,从头到尾访问链表。这里有两种可能:
1.此数据已被缓存在链表中了,遍历链表找到此数据将其从位置上删除,并将其插入链表第一个节点。
2.此数据未被缓存在链表中,此时又有两种可能:
①此缓存未满,将数据直接插入链表头。
②此缓存已满,将链表尾最后一个数据删除,并将新数据插入链表头。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值