算法之LinkedList

275 阅读1分钟

要学习链表,首先要知道什么线性表。

线性表

线性表(List):零个或多个数据元素的优先序列。

  • 序列,是有顺序的
  • 数量有限

线性表的存储

  • 顺序存储
  • 链式存储

对比两种存储方式的优缺点:

  1. 存储分配方式
    • 顺序存储结构用一段连续的存储单元依次存储线性表的数据元素
    • 单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素
  2. 时间性能
    • 顺序存储查找o(1),插入/删除o(n)
    • 链式存储查找o(n),插入/删除o(1)
  3. 空间性能
    • 顺序存储需要预分配存储空间,分大了,浪费;分小了,上溢
    • 链式存储不需要预分配存储空间

leetcode刷题顺序:

  • 面试题06-从尾到头打印链表 (循环)
  • 面试题22-链表中倒数第k个结点 (快慢指针,fast先走k步,再一同前进)
  • 面试题24-反转链表 (stack或递归)
  • 面试题25-合并两个排序的链表 (递归)
  • 面试题52-两个链表的第一个公共节点 (双指针,长的链表先走,走到跟短链表一样的长度)
  • 面试题18-删除链表的节点 (prev/cur pointer)
  • 删除排序链表中的重复元素 (fast/slow pointer)
  • 删除排序链表中的重复元素2 (循环/递归)
  • 面试题35-复杂链表的复制 (跳表)