栈(Stack)

定义

栈是一种操作受限的线性数据结构,遵循**先进后出(LIFO, Last In First Out)**原则。

核心特性

  • 只能在栈顶插入和删除元素
  • 类比:一摞盘子,最后放的在最上面,最先被拿走

基本 API

方法 描述 时间复杂度
push(E e) 向栈顶插入元素 O(1)
pop() 从栈顶删除并返回元素 O(1)
peek() / top() 查看栈顶元素(不删除) O(1)
size() 返回栈中元素个数 O(1)

底层实现

  • 基于数组实现:可使用动态数组,栈顶对应数组末尾,增删均为 O(1)
  • 基于链表实现:使用双链表,可将头部或尾部作为栈顶,增删均为 O(1)(见用链表实现队列栈

相关概念

  • 递归:递归调用使用系统栈
  • DFS:深度优先搜索可用栈实现
  • 动态数组:栈的数组实现方式
  • 链表:栈的链表实现方式

Interactive Graph