06链表

链表与LRU缓存

1. 链表是什么?

链表通过指针将一组零散的内存块串联在一起;这个内存块称为链表的结点;结点除了存储数据之外,还需要记录下一个结点的地址,这个记录下个结点地址的指针叫做后继指针next;
第一个结点叫做头结点;最后一个结点叫做尾结点;尾结点指针指向的是一个空地址null

 

2. 链表的分类

单链表:
循环链表:尾结点指针指向链表的头结点。
双向链表:拥有后继指针next指向后面的结点,拥有前驱指针prev指向前面的结点

 

3. 链表的时间复杂度

插入删除O(1),随机访问O(n),空间换时间

 

4. 基于链表实现LRU缓存淘汰算法?

常见的缓存淘汰策略
先进先出策略FIFO(first in,first out)
最少实用策略LFU(least frequently used)
最近最少使用策略LRU(least recently used)
思路:维护一个有序单链表,越靠近尾部的结点越是越早之前访问的,即最先应该被淘汰的。
如果数据已被缓存在链表中,遍历得到结点,从原位置删除,插入到链表头部;
如果数据没缓存在链表中:
    缓存未满,则将结点直接插入链表头部
    缓存已满,将链表尾结点删除,新结点插入链表头部

 

总结

概念,链表,双向链表,循环链表,缓存淘汰策略

原文出处:https://time.geekbang.org/column/article/41013(极客时间付费专栏)

转载于:https://www.cnblogs.com/yangjiming/p/10218863.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值