链表
- 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。 节选自百度百科
节点: 组成链表的一个个节点
例:
class Node(object):
def __init__(self, e = None, next_node: int = None):
# 该节点存储的数据
self.e = e
# 指向下一个节点的指针
self.next = next_node
单链表
- 最基本的链表。链表的每个节点中仅存储指向下一个节点的指针,也就是说查找数据只能从头开始查。
实现
这里的实现稍微和概念有些不同,节点存储的是下一个节点而不是指向下个节点的指针
Python 索引式链表
注意事项
- 虚拟头结点
dummyhead
- 虚拟头节点的作用就是方便写插入删除的逻辑
其他衍生品种
双向链表
- 在单向链表的每个节点中再增加一个指针指向上一个节点
循环链表
- 指的是在单向链表和双向链表的基础上,将两种链表的最后一个结点指向第一个结点从而实现循环
算法应用
- 简单 合并有序链表
- 中等 合并区间
- 在lru缓存里可以使用,哈希表为解决哈希碰撞也使用链表存储哈希值一致的元素