后进先出

5 分钟

栈(stack)是只在"一头"操作的数据结构,像一摞盘子:新盘子放最上面,取也从最上面取。最后放进去的最先被拿走,这条规矩叫后进先出(LIFO,Last In First Out)。

放东西叫入栈(push),拿东西叫出栈(pop),只能看最上面那个(top)。依次放 1、2、3,从底到顶是 1、2、3;出栈顺序则是 3、2、1,正好倒过来。

// 手写一个最简单的栈
int st[100], top = 0;   // top 指向下一个空位
st[top++] = 1;          // 入栈 1
st[top++] = 2;          // 入栈 2
int x = st[--top];      // 出栈,x = 2

每次 push/pop 都是

坑:出栈、看栈顶前一定先判断栈是不是空的(top>0),对空栈操作会越界或读到垃圾值。"后进先出"是括号匹配、表达式求值、递归模拟的基础,务必记牢。

小纸条

往栈里依次放 1、2、3,第一个被拿出来的是几?

登录 后可看答案