// Stack.java: a stack implementation based on linked lists public class Stack { private java.util.LinkedList items = new java.util.LinkedList<>(); public void push(E newItem) { items.add(newItem); } public E pop() { return items.remove(items.size() - 1); } public boolean isEmpty() { return items.isEmpty(); } public static void main(String[] args) { Stack nums = new Stack<>(); if ( !nums.isEmpty() ) System.err.println("Error: initial stack not empty."); for(int i = 0; i < 20; ++i) nums.push(i); if ( nums.isEmpty() ) System.err.println("Error: stack still empty."); for(int i = 19; i >= 0; --i) if ( nums.pop() != i ) System.err.println("Error: pop of " + i + " out of order."); if ( !nums.isEmpty() ) System.err.println("Error: final stack not empty."); System.out.println("All tests completed."); } }