The Add Method

When adding, there are four cases to address:

Adding to an Empty List

Adding to the Head of the List

if (nextItem == head) {

  Node<E> newNode = new Node<E>(obj);

  newNode.next = nextItem;

  nextItem.prev = newNode;

  head = newNode;

}

...

size++;

index++;

Adding to the Tail of the List

if (nextItem == null) {

  Node<E> newNode = new Node<E>(obj);

  tail.next = newNode;

  newNode.prev = tail;

  tail = newNode

}

...

size++;

index++;

Adding to the Middle of the List

else {

  Node<E> newNode = new Node<E>(obj);

  newNode.prev = nextItem.prev;

  nextItem.prev.next = newNode;

  newNode.next = nextItem;

  nextItem.prev = newNode;

}

...

size++;

index++;