import java.util.*; public class Stack { private List contents; public Stack() { contents = new ArrayList(); // or LinkedList or whatever } public void push(Object x) { contents.add(x); // adds to end } public Object pop() { if (isEmpty()) return null; else { Object ans = contents.remove(contents.size()-1); return ans; } } public Object peek() { if (isEmpty()) return null; else { Object ans = pop(); push(ans); return ans; } } public boolean isEmpty() { return (contents.size() == 0); } public String toString() { if (isEmpty()) return "empty stack"; else return "stack " + contents; } }