Reimplement the LinkedList class of Section 15.2 so that the Node and LinkedListIterator classes are not inner classes.

Complete the following files:

Use the following file:

   A program that tests the LinkedList class
public class ListTester
   public static void main(String[] args)
      LinkedList staff = new LinkedList();
      // | in the comments indicates the iterator position

      ListIterator iterator = staff.listIterator(); // |DHRT; // D|HRT; // DH|RT

      // Add more elements after second element
      iterator.add("Juliet"); // DHJ|RT
      iterator.add("Nina"); // DHJN|RT; // DHJNR|T

      // Remove last traversed element 

      iterator.remove(); // DHJN|T
      // Print all elements

      iterator = staff.listIterator();
      while (iterator.hasNext())
         System.out.print( + " ");
      System.out.println("Expected: Dick Harry Juliet Nina Tom");
      // Testing that the LinkedListIterator and Node classes are not inner classes
      iterator = new LinkedListIterator(staff);
      Node helloWorld = new Node("Hello", new Node("World", null));