Level 2 · 数据结构

栈(Stack)

一摞盘子:只能从最上面放、从最上面取 —— 后进先出(LIFO)。

一、五个核心操作

操作含义
push(x)把 x 压到栈顶
pop()弹掉栈顶元素(不返回值)
top()查看栈顶(不弹出)
empty()是否为空
size()元素个数

二、互动演示:亲手 push / pop

绿色是栈顶。试试连续 push 再 pop,体会"后进先出"。

三、C++ STL stack

#include <stack>
using namespace std;

stack<int> s;
s.push(1);
s.push(2);
s.push(3);        // 底→顶:1 2 3
cout << s.top();  // 3(看栈顶)
s.pop();          // 弹掉 3
cout << s.top();  // 2

// 空栈别碰:先判断
if (!s.empty()) s.pop();

top() 看一眼,pop() 才是弹出;空栈调用 top()/pop() 是未定义行为。应用:括号匹配、表达式求值、递归调用栈。