// Won't compile until you add the methods get, add, and remove
// ****************************************************
// Reference-based implementation of ADT list.
// ****************************************************
// reference to linked list of items
public class ListReferenceBased<T> {//implements ListInterface<T> {

  private Node<T> head;
  private int numItems; // number of items in list

  public ListReferenceBased() {
    numItems = 0;
    head = null;
  } // end default constructor

  public boolean isEmpty() {
    return numItems == 0;
  } // end isEmpty

  public int size() {
    return numItems;
  } // end size

  private Node<T> find(int index) {
    Node<T> curr = head;
    for (int skip = 1; skip < index; skip++) {
      curr = curr.getNext();
    } // end for
    return curr;
  } // end find

  // The methods get, add, and remove are omitted here – see
  // Programming Problem 6.

  public void removeAll() {
  // setting head to null causes list to be
  // unreachable and thus marked for garbage
  // collection
    head = null;
    numItems = 0;
  } // end removeAll
} // end ListReferenceBased
