和数据结构:数组的区别在于,链表通过指针将一组零散的内存块串联起来使用
- 单链表
- 结点:即内存块
- 后继指针:记录下个节点地址的指针
- 头结点:第一个节点,用来记录链表的基地址
- 尾节点:指针不指向下一个节点,而是指向 空地址 NULL
- 时间复杂度:
- 插入删除:不用像数据结构:数组那样为保证内存连续性进行数据搬移,复杂度为 O(1)
- 查找:内存非连续,自然找不到下标计算内存地址,只能顺序查询,复杂度为 O(n)
- 循环链表
- 特点:一种特殊的单链表,尾节点指针指向第一个节点
- 优点:从链尾到链头比较方便
- 使用场景:数据具有环形结构特点的场景,如约瑟夫问题
- 双向链表
- 特点:相比单列表只有一个指向后续节点的 next 指针,还有一个指向上一个节点的 prev 指针
- 优点:更多的存储空间,带来更高的操作灵活性