public T peek() throws EmptyStackException { LinkedStack<T> last = getLastStack(); if (null == last) { throw new EmptyStackException(); } return last.peek(); }
public static void main(String[] args) { ArrayStack<Integer> aS = new ArrayStack<Integer>(); LinkedStack<Integer> lS = new LinkedStack<Integer>(); aS.push(3); aS.push(5); aS.push(10); aS.push(11); System.out.println("" + aS.peek() + ", " + aS.pop() + ", " + aS.peek2()); aS.remove(1); lS.push(3); lS.push(4); lS.push(5); lS.push(7); lS.push(11); lS.push(35); System.out.println("" + lS.peek() + ", " + aS.pop() + ", " + aS.peek2()); }
/** * The purpose of this program is to create and test two implementations of the Stack Interface. * The first implementation is backed by an Array and the class is called ArrayStack. The second * implementation is backed by a LinkedList and the class is called LinkedStack. Credit for most * of the code in both classes goes to Frank M. Carrano. Mr. Carrano's code was taken from the * third edition of the book Data Structures and Abstractions with Java * * @param args the command line arguments */ public static void main(String[] args) { ArrayStack<String> sAStack = new ArrayStack(); ArrayStack<Integer> iAStack = new ArrayStack(); LinkedStack<String> sLStack = new LinkedStack(); LinkedStack<Integer> iLStack = new LinkedStack(); // Begin ArrayStack testing System.out.println("===== Begin ArrayStack Test =====\n"); // Empty String Stack System.out.println("Empty String Stack " + printArrayStackSizeAndCap(sAStack) + "\n"); // Empty Integer Stack System.out.println("Empty Integer Stack " + printArrayStackSizeAndCap(iAStack) + "\n"); // Add 5 Strings to String Stack for (int a = 0; a < 5; a++) { sAStack.push(Integer.toString(a)); } System.out.println( "After adding 5 Strings String Stack " + printArrayStackSizeAndCap(sAStack) + "\n"); // Add integers 1 to 4 for (int a = 1; a < 5; a++) { iAStack.push(a); } System.out.println( "After adding Integers 1 to 4 Integer Stack " + printArrayStackSizeAndCap(iAStack) + "\n"); // Perform peek on Integer Array Stack iStack System.out.println("After peek Integer Stack top value is: " + iAStack.peek() + "\n"); // Perform pop on Integer Array Stack iStack System.out.println("After pop Integer Stack top value was: " + iAStack.pop() + "\n"); System.out.println("After pop Integer Stack " + printArrayStackSizeAndCap(iAStack) + "\n"); // Check isEmpty on both Stacks System.out.println("String Stack is empty: " + sAStack.isEmpty() + "\n"); System.out.println("Integer Stack is empty: " + iAStack.isEmpty() + "\n"); // Clear both stacks sAStack.clear(); iAStack.clear(); System.out.println("After clear String Stack is empty: " + sAStack.isEmpty() + "\n"); System.out.println("After clear Integer Stack is empty: " + iAStack.isEmpty() + "\n"); // Add integers 1 to 4 for (int a = 1; a < 5; a++) { iAStack.push(a); } System.out.println( "After adding Integers 1 to 4 Integer Stack " + printArrayStackSizeAndCap(iAStack) + "\n"); // End ArrayStack testing System.out.println("===== End ArrayStack Test =====\n"); // Begin LinkedStack testing System.out.println("===== Begin LinkedStack Test =====\n"); // Empty String Stack System.out.println("Empty String Stack " + printLinkedStackSizeAndCap(sLStack) + "\n"); // Empty Integer Stack System.out.println("Empty Integer Stack " + printLinkedStackSizeAndCap(iLStack) + "\n"); // Add 5 Strings to String Stack for (int a = 0; a < 5; a++) { sLStack.push(Integer.toString(a)); } System.out.println( "After adding 5 Strings String Stack " + printLinkedStackSizeAndCap(sLStack) + "\n"); // Add integers 1 to 4 for (int a = 1; a < 5; a++) { iLStack.push(a); } System.out.println( "After adding Integers 1 to 4 Integer Stack " + printLinkedStackSizeAndCap(iLStack) + "\n"); // Perform peek on Integer Array Stack iStack System.out.println("After peek Integer Stack top value is: " + iLStack.peek() + "\n"); // Perform pop on Integer Array Stack iStack System.out.println("After pop Integer Stack top value was: " + iLStack.pop() + "\n"); System.out.println("After pop Integer Stack " + printLinkedStackSizeAndCap(iLStack) + "\n"); // Check isEmpty on both Stacks System.out.println("String Stack is empty: " + sLStack.isEmpty() + "\n"); System.out.println("Integer Stack is empty: " + iLStack.isEmpty() + "\n"); // Clear both stacks sLStack.clear(); iLStack.clear(); System.out.println("After clear String Stack is empty: " + sLStack.isEmpty() + "\n"); System.out.println("After clear Integer Stack is empty: " + iLStack.isEmpty() + "\n"); // Add integers 1 to 4 for (int a = 1; a < 5; a++) { iLStack.push(a); } System.out.println( "After adding Integers 1 to 4 Integer Stack " + printLinkedStackSizeAndCap(iLStack) + "\n"); // End ArrayStack testing System.out.println("===== End LinkedStack Test ====="); }