简介
栈的结构特性是后入先出,一般栈给出了基本操作接口有:
empty:栈空返回真;
pop:移除栈顶元素;
push:在栈顶增加元素;
size:返回栈中元素数目;
top:返回栈顶元素。
今天我们要实现一个新的栈,在这些普通栈的操作上增加一个新的操作min,那就是返回栈中的最小元素。
设计思路
在新设计的栈中使用两个库中给出的栈,一个按照正常的压栈顺序向栈中存入数据,另一个栈只在存入的数据比之前存入的数据小的时候才入栈。这样最小值就可以从存最小值的栈中找到。
代码实现
class MinStack {
public:
void push(int number)
{
stk.push(number);
if(minstk.empty() || number <= minstk.top())
{
minstk.push(number);
}
}
void pop()
{
int top = stk.top();
stk.pop();
if(top == minstk.top())
{
minstk.pop();
}
}
int min()
{
return minstk.top();
}
private:
stack<int> stk,minstk;
};