一、解答开篇
维护一个有序单链表,越靠近链表尾部的结点是越早之前访问的。当有一个新的数据被访问时,我们从表头开始顺序遍历链表。
①如果此数据之前已经被缓存在链表中了,我们遍历得到这个数据对应的结点,并将其以原来的位置删除,然后插入到链表的头部;
②如果此数据没有缓存在链表中,又可以分为两种情况:
如果此时缓存未满,则将此结点直接插入到链表的头部;
如果此时缓存已满,则链表尾结点删除,将新的结点插入到链表的头部。
二、链表的种类
单链表:一个头结点,一个尾结点,尾结点指向为null。
循环链表:尾结点的next指向头结点。
双向链表:一个pre指向前一个结点,一个next指向下一个结点。
双向循环链表:头结点的pre指向尾结点,尾结点的next指向头结点。
day05数据结构与算法之美(上,如何实现LRU缓存淘汰算法)
最新推荐文章于 2024-04-13 10:40:41 发布
本文介绍了一种使用链表实现缓存管理的方法。当访问的数据已在链表中时,将其移至链表头部;若不在且缓存未满,则直接插入头部;若缓存已满,则删除尾部节点后将新节点插入头部。此外,还概述了四种链表类型:单链表、循环链表、双向链表和双向循环链表。
716

被折叠的 条评论
为什么被折叠?



