链表(Linked list):链表是一种非连续、非顺序的存储结构。链表本身没有大小的限制,天然地支持动态扩容
它并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用
基础的链表有:
单链表:每个节点除了存储数据还有指向像一个节点的后继指针
头节点:指向基地址
尾节点:后继指针指向null
效率:
插入/移除时间复杂度为O(n)由于链表不需要连续的空间,所以可以随机插入,不需要搬移数据
查询:因为空间不连续,无法通过寻址公式计算下标访问,只能从头节点循环访问,时间复杂度为O(1)
循环链表:特殊的单链表。尾部节点指向头节点单链表
双向链表:每个节点比单向链表多了前驱指针prev,指向前一个节点的位置。耗费空间,但是支持双向遍历
LRU:最近最少使用缓存淘汰算法
链表实现