2.包含min函数的栈
//实现定义栈的数据结构,在该类型中实现一个能够得到栈最小元素的min函数
class DataStack{
Stack<Integer> dataStack = new Stack<Integer>();//数据栈
Stack<Integer> minStack = new Stack<Integer>();//辅助栈
Integer temp;
public void push(int node) {//入栈
dataStack.push(node);//将数据栈入栈
if (minStack.isEmpty()) {//判断辅助栈是否为空,为空则进行入栈
minStack.push(node);
temp = node;//将入栈的元素赋给临时变量temp
}else {//不为空,则进行判断
temp = minStack.peek();//将辅助栈中的元素赋给临时变量,与要入栈的元素进行比较
if (temp > node) {//判断数据栈中的元素是否比辅助栈中的元素小,小则可以入栈
minStack.push(node);
}else {//否则将自己入栈
minStack.push(temp);
}
}
}
public void pop(){//出栈,数据栈和辅助站都要出栈
dataStack.pop();
minStack.pop();
}
public int top(){
return dataStack.peek();
}
public int min(){
return minStack.peek();//peek方法仅仅是获取数值,不会出栈;而pop方法会将元素出栈
}
}