day05数据结构与算法之美(上,如何实现LRU缓存淘汰算法)

本文介绍了一种使用链表实现缓存管理的方法。当访问的数据已在链表中时,将其移至链表头部;若不在且缓存未满,则直接插入头部;若缓存已满,则删除尾部节点后将新节点插入头部。此外,还概述了四种链表类型:单链表、循环链表、双向链表和双向循环链表。

一、解答开篇
维护一个有序单链表,越靠近链表尾部的结点是越早之前访问的。当有一个新的数据被访问时,我们从表头开始顺序遍历链表。
①如果此数据之前已经被缓存在链表中了,我们遍历得到这个数据对应的结点,并将其以原来的位置删除,然后插入到链表的头部;
②如果此数据没有缓存在链表中,又可以分为两种情况:
如果此时缓存未满,则将此结点直接插入到链表的头部;
如果此时缓存已满,则链表尾结点删除,将新的结点插入到链表的头部。
二、链表的种类
单链表:一个头结点,一个尾结点,尾结点指向为null。
循环链表:尾结点的next指向头结点。
双向链表:一个pre指向前一个结点,一个next指向下一个结点。
双向循环链表:头结点的pre指向尾结点,尾结点的next指向头结点。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值