#include<iostream>
#include<stack>
using namespace std;
class MinStack {
public:
void push(int x) {
St.push(x);
if(Min.size()<=0||x<=Min.top())
Min.push(x);
}
void pop() {
if(!St.empty()){
if(!Min.empty()&&St.top() == Min.top())
Min.pop();
St.pop();
}
}
int top() {
if(!St.empty()) return St.top();
}
int getMin() {
if(!Min.empty())
return Min.top();
}
private:
stack<int> St,Min;
};
int main()
{
MinStack tg;
tg.push(-2);
tg.push(0);
tg.push(-1);
cout<<tg.getMin();
tg.top();
tg.pop();
cout<<tg.getMin();
system("pause");
}
注释:empty(),push(),pop(),top()等等
联想用双栈实现队列的插入,和出队列,反之一样去实现。