用链表实现队列/栈

raw/articles/2026/05/链表实现队列和栈

核心要点

本文是 labuladong 数据结构基础系列教程,讲解如何以链表作为底层结构实现栈和队列,所有操作均达到 O(1) 时间复杂度。

用链表实现栈

  • 使用双链表(java.util.LinkedList)作为底层存储
  • 可将双链表的头部或尾部作为栈顶:两端增删操作均为 O(1)
  • 示例代码 MyLinkedStack
    • push(E e):向栈顶添加元素 → list.addLast(e)(尾部作为栈顶)
    • pop():弹出栈顶元素 → list.removeLast()
    • peek():查看栈顶 → list.getLast()
  • 若改为头部作为栈顶,只需将 addLastaddFirstremoveLastremoveFirstgetLastgetFirst

用链表实现队列

  • 同样使用双链表作为底层存储
  • 将双链表头部作为队头、尾部作为队尾:头部删除 O(1),尾部添加 O(1)
  • 示例代码 MyLinkedQueue
    • push(E e):入队 → list.addLast(e)(队尾添加)
    • pop():出队 → list.removeFirst()(队头删除)
    • peek():查看队头 → list.getFirst()
  • 也可反转方向,将头部作为队尾、尾部作为队头,只需调整对应 API 调用

相关概念

相关实体


Interactive Graph