您的位置:首页 > 其它

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

2018-12-23 18:27 204 查看

首先简单介绍下链表

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

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

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: