题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
分析
使用两个栈s1,s2
实现:
push:
堆栈S1每次存储push输入元素;
如果该数<=S2顶元素 或者 S2空
堆栈S2存储该元素;
pop:
S1 pop
如果堆栈S2顶元素==S1顶元素
S2 pop
top
返回s1顶元素
min
返回s2顶元素
代码实现
void push(int value) {
stk1.push(value);
if(stk2.empty())
stk2.push(value);
else
{
if(value<=stk2.top())
stk2.push(value);
}
}
void pop() {
if( stk1.top()== stk2.top())
{
stk2.pop();
}
stk1.pop();
}
int top() {
return stk1.top();
}
int min() {
return stk2.top();
}
stack<int>stk1;
stack<int>stk2;