含有记录栈的数组栈实现,两个记录栈,一个记录最大值,一个记录最小值。
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
public class MaxStack<E extends Comparable<E>> {
private List<E> stack;
private List<E> maxStack;
private List<E> minStack;
public MaxStack() {
stack = new ArrayList<E>();
maxStack = new ArrayList<E>();
minStack = new ArrayList<E>();
}
public int size() {
return stack.size();
}
public boolean isEmpty() {
return stack.size() == 0;
}
public E push(E e) {
if (e == null)
return null;
int count = stack.size();
if (count == 0) {
stack.add(e);
maxStack.add(e);
minStack.add(e);
return e;
}
stack.add(e);
if (maxStack.get(count - 1).compareTo(e) > 0)
maxStack.add(maxStack.get(count - 1));
else
maxStack.add(e);
if (minStack.get(count - 1).compareTo(e