数据结构与算法分析(四)链表
作者:互联网
- 链表(Linked List)的经典使用场景,LRU缓存淘汰算法
- 缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如:CPU缓存、数据库缓存、浏览器缓存等等
- 缓存的大小有限,用满时 留哪些 删哪些呢?先进先出策略FIFO(First IN,First Out)、最少使用策略LFU(Least Frequently Used)、最近最少使用策略LRU(Least Recently Used)
- 举例:买了很多书,书太多了放不下,作大扫除,选择去掉一部分策略如上述策略
- 如何用链表实现LRU缓存淘汰策略?
- 数组与链表的区别:数组需要一块连续的内存空间来存储,对内存的要求比较高。如果我们申请一个100MB大小的数组,如果内存中没有连续的足够大的存储空间,即便内存剩余大于100MB还是会申请失败
- 链表相反,他不需要一块连续的内存空间,他通过指针将一组零散的内存块串联起来使用,相同情况申请100MB的链表没啥大问题详情见此图
- 有三种最常见的链表:单链表,双向链表和循环链表
- 单链表:我们把内存块称为链表的结点,为了将所有结点串联起来,每个链表的结点除了存储数据之外还需要记录链上的下一个结点的地址。我们把记录下一个结点地址的指针叫做后继指针next
标签:结点,缓存,链表,算法,LRU,内存,数据结构,100MB 来源: https://blog.csdn.net/weixin_39384775/article/details/96708103