入门

栈把"最后来的元素先处理"变成一个稳定抽象。

会依次演示 push、top 和 pop,让后进先出过程可视化。

AlgoAnim · 栈

待机

速度
待机
// 源代码
1vector<int> st;
2
3void pushValue(int x) {
4    st.push_back(x);
5}
6
7void popValue() {
8    if (!st.empty()) st.pop_back();
9}
10
11int topValue() {
12    return st.back();
13}

复杂度分析

时间 push/pop/top O(1)
空间 O(n)
最优 O(1)
最坏 O(1)

算法讲解

栈只开放一端操作,push 把元素压到顶部,pop 从顶部弹出,因此遵循后进先出规则。

括号匹配、表达式求值、DFS 非递归写法和函数调用栈,都是栈思维的典型应用。

如果你能明确区分"当前顶部是谁"和"什么时候需要回退到上一个状态",就已经抓住了栈的核心。

实现上既可以用数组模拟,也可以用链表实现。