概念:
栈是一种“操作受限”的线性表,体现在只能在一段插入删除数据,符合先进后出的特性
操作:
入栈push:从栈顶放入元素,O(1)
出栈pop:从栈顶取出元素,O(1)
取栈顶元素top或者peek:访问栈顶元素但不弹出,O(1)
栈的特性:栈可以用数组实现(顺序栈),也可以用链表实现(链式栈)
注意点:
1.函数调用栈
2. 编译器利用栈实现表达式求值
3. 浏览器的前进后退功能使用栈
常考面试题:
1. 实现一个栈,入栈push,出栈pop,返回最小值min的复杂度为O(1)
2. 使用两个栈实现一个队列
3. 不借助额外空间实现栈的逆序
4. 实现共享栈
5. 括号的匹配问题