一.stack的介绍和使用
(1)概念
·stack是一种后进先出的容器结构,准确来说stack并不是容器,而是一种容器适配器(对特定类封装作为其底层的容器)。
(2)常见接口
函数说明 | 接口说明 |
---|---|
stack() | 构造空的栈 |
empty() | 判断栈是否为空 |
size() | 返回stack中的元素个数 |
top() | 返回栈顶元素的引用 |
push() | 将元素压入stack中 |
pop() | 将stack栈顶的元素弹出 |
(3)使用
1.最小栈问题
最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
思路:使用两个栈,一个正常存放元素,另一个存放最小值,每次入栈时比较更新即可。
class MinStack {
public:
MinStack() {
}
void push(int val) {
if(_minst.empty() || val <= _minst.top())//_minst为空或者val值小于_minst中最小值则入栈
{
_minst.push(val);
}
_st.push(val);
}
void pop() {
if(_minst.top() == _st.top())//若_st出栈的刚好为最小值,则_minst亦出栈
{
_minst.pop();
}
_st.pop();
}
int top() {
return _st.top();