问题:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 【该题摘自《剑指offer》】
解答:
public static void main(String[] args) {
Stack<Integer> stack1 = new Stack();
Stack<Integer> stack2 = new Stack();
for(int i =10; i >0 ;i--){
push(stack1,stack2,i);
}
pop(stack1,stack2);
System.out.println("stack1="+stack1+"\n"+"stack2="+stack2);
System.out.println(min(stack2));
}
public static void push(Stack<Integer> stack1, Stack<Integer> stack2, int node) {
stack1.push(node);
if (stack2.isEmpty()) {
stack2.push(node);
} else {
if (stack2.peek() > node) {
stack2.push(node);
}
}
}
public static void pop(Stack<Integer> stack1, Stack stack2) {
if (stack1.pop() == stack2.peek()) {
stack2.pop();
}
}
public static int top(Stack<Integer> stack1) {
return stack1.peek();
}
public static int min(Stack<Integer> stack2) {
return stack2.peek();
}