Пример #1
0
  /**
   * 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 =====");
  }