14.包含min函数的栈
题目内容:
代码及思路:
class MinStack{
public:
MinStack(){
}
void push(int x)
{
_data.push(x);
if(_min.empty())
{
_min.push(x);
}
else
{
if(x>_min.top())
{
x=_min.top();
}
_min.push(x)
}
}
void pop()
{
_data.pop(); //数据栈与最小栈同步弹出
_min.pop();
}
int top()
{
return _data.top();
}
int getMin()
{
return _min.top();
}
private:
stack<int> _data;
stack<int> _min;
};
//测试部分
int main()
{
MinStack minStack;
minStack.push(-2);
printf("top=[%d]\n", minStack.top());
printf("min=[%d]\n", minStack.get_Min());
minStack.push(0);
printf("top=[%d]\n", minStack.top());
printf("min=[%d]\n", minStack.get_Min());
minStack.push(-5);
printf("top=[%d]\n", minStack.top());
printf("min=[%d]\n", minStack.get_Min());
return 0;
}