🧮 栈 (Stack)

🧮 栈 (Stack)

难度 / Difficulty: 简单 (Easy)
分类 / Category: 数据结构 (Data Structure)
操作复杂度 / Operations: 全部 O(1)
空间复杂度 / Space Complexity: O(n)


📖 算法简介 / Introduction

栈是一种后进先出(Last In First Out, LIFO)的数据结构。就像一叠盘子,只能从最上面放和取。

A stack is a Last In First Out (LIFO) data structure. Like a stack of plates — you can only add or remove from the top.

核心操作:Push(压入)Pop(弹出)


💡 算法原理 / Principle

核心特性

  • LIFO:最后进入栈的元素最先出来
  • 只允许栈顶操作:不能访问或删除栈中间的元素
  • 方向单一:从一端进,从同一端出

基本操作

操作 说明 时间复杂度
push(x) 将元素 x 压入栈顶 O(1)
pop() 弹出栈顶元素 O(1)
top() 查看栈顶元素(不弹出) O(1)
empty() 判断栈是否为空 O(1)

📝 代码实现 / Implementation

class Stack:
    def __init__(self):
        self.stack = []
    
    def push(self, x):
        self.stack.append(x)
    
    def pop(self):
        if self.stack:
            return self.stack.pop()
        return None
    
    def top(self):
        if self.stack:
            return self.stack[-1]
        return None
    
    def empty(self):
        return len(self.stack) == 0
    
    def size(self):
        return len(self.stack)

✨ 示例 / Example

操作序列:
push(1)  →  [1]
push(2)  →  [1, 2]
push(3)  →  [1, 2, 3]
pop()    →  返回 3,栈变为 [1, 2]
pop()    →  返回 2,栈变为 [1]
top()    →  返回 1,栈仍为 [1]

🎯 适用场景 / Scenarios

  • 函数调用栈 — 程序执行时的调用栈(递归调用)
  • 括号匹配 — 验证括号是否匹配({[()]})
  • 撤销操作 — 编辑器的 Ctrl+Z 撤销
  • 表达式求值 — 中缀转后缀表达式
  • 深度优先搜索(DFS) — 用栈实现 DFS

Function call stack (recursion), Bracket matching, Undo operations (Ctrl+Z), Expression evaluation (infix to postfix), DFS implementation.


🔄 与队列对比 / Comparison with Queue

特性 队列
全称 Stack Queue
简称 LIFO FIFO
操作端 仅栈顶 一端进,另一端出
应用 递归、撤销 任务调度、层次遍历
实现方式 push/pop enqueue/dequeue

*本文由 AI 自动生成 Generated by AI*

🔒 隐私说明:网站使用 Google AdSense 投放广告,Google 可能使用 Cookie 进行访客分析。了解详情请阅读我们的 隐私政策

🔒 Privacy Notice: This site uses Google AdSense to serve ads. Google may use cookies for visitor analytics. See our Privacy Policy for details.