题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
题目分析
一个栈保存当前栈中的原色,其功能和一个正常栈没有区别;另一个栈用于保存每一步的最小值
public class 包含min函数的栈 {
public 包含min函数的栈() {
this.stackData=new Stack<Integer>();
this.stackMin=new Stack<Integer>();
}
public static void main(String[] args) {
}
public void push(int node) {
stackData.push(node);
if(stackMin.isEmpty())
stackMin.push(node);
else if(node<=this.min())
stackMin.push(node);
}
public void pop() {
if(stackData.isEmpty())
throw new RuntimeException("stack is empty");
int value=stackData.pop();
if(value==this.min())
this.stackMin.pop();
}
public int top() {
return stackData.peek();
}
public int min() {
return stackMin.peek();
}
private Stack<Integer> stackData;
private Stack<Integer> stackMin;
}