重点是getMin(),整块代码为此服务,其他的都能直接调用`
class MinStack {
public:
stack<int>S;
stack<int>Min; //记录每次入栈后变化的最小值
void push(int x) {
S.push(x);
if(Min.empty()||x<=Min.top())Min.push(x);
}
void pop() {
if(!S.empty()){
if(S.top()==Min.top()) Min.pop();
S.pop();
}else{cout<<"空栈";}
}
int top() {return S.top();}
int getMin() {return Min.top();}
};
——————栈的基本操作:
在栈中应包含头文件: #include< stack >
stack s //创建一个栈
s.empty(); //如果栈为空则返回true, 否则返回false
s.push(); //将元素压入栈顶
s.top(); //返回栈顶元素, 但不删除该元素
s.pop(); //弹出栈顶元素, 但不返回其值
s.size(); //返回栈中d元素的个数