//设计实现一个getMin功能的栈
#include <iostream>
#include <stack>
using namespace std;
{
public:
void push(int x)
{
if (DataStack.empty() && MinStack.empty())
{
MinStack.push(x);
}
else
{
if (x <= MinStack.top())
{
MinStack.push(x);
}
else
{
while (!MinStack.empty() && MinStack.top() < x)
{
DataStack.push(MinStack.top());
MinStack.pop();
}
MinStack.push(x);
while (!DataStack.empty())
{
MinStack.push(DataStack.top());
DataStack.pop();
}
}
}
}
void pop()
{
if(!MinStack.empty())
{
MinStack.pop();
}
}
int getMin()
{
return MinStack.top();
}
private:
stack<int> DataStack;
stack<int> MinStack;
};
int main()
{
GetMinStack St;
int arr[] = { 9, 2, 1, 2, };
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
St.push(arr[i]);
St.pop();
cout << St.getMin() << endl;
}