要学习链表,首先要知道什么线性表。
线性表
线性表(List):零个或多个数据元素的优先序列。
- 序列,是有顺序的
- 数量有限
线性表的存储
- 顺序存储
- 链式存储
对比两种存储方式的优缺点:
- 存储分配方式
- 顺序存储结构用一段连续的存储单元依次存储线性表的数据元素
- 单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素
- 时间性能
- 顺序存储查找o(1),插入/删除o(n)
- 链式存储查找o(n),插入/删除o(1)
- 空间性能
- 顺序存储需要预分配存储空间,分大了,浪费;分小了,上溢
- 链式存储不需要预分配存储空间
leetcode刷题顺序:
- 面试题06-从尾到头打印链表 (循环)
- 面试题22-链表中倒数第k个结点 (快慢指针,fast先走k步,再一同前进)
- 面试题24-反转链表 (stack或递归)
- 面试题25-合并两个排序的链表 (递归)
- 面试题52-两个链表的第一个公共节点 (双指针,长的链表先走,走到跟短链表一样的长度)
- 面试题18-删除链表的节点 (prev/cur pointer)
- 删除排序链表中的重复元素 (fast/slow pointer)
- 删除排序链表中的重复元素2 (循环/递归)
- 面试题35-复杂链表的复制 (跳表)