Source of 14.24.java


  1: public T remove(int givenPosition)
  2: {
  3:    T result = null;                           // Return value
  4:    if ((givenPosition >= 1) && (givenPosition <= numberOfEntries))
  5:    {
  6:       assert !isEmpty();
  7:       if (givenPosition == 1)                 // Case 1: Remove first entry
  8:       {
  9:          result = firstNode.getData();        // Save entry to be removed
 10:          firstNode = firstNode.getNextNode();
 11:          if (numberOfEntries == 1)
 12:             lastNode = null;                  // Solitary entry was removed
 13:       }
 14:       else                                    // Case 2: Not first entry
 15:       {
 16:          Node nodeBefore = getNodeAt(givenPosition - 1);
 17:          Node nodeToRemove = nodeBefore.getNextNode();
 18:          Node nodeAfter = nodeToRemove.getNextNode();
 19:          nodeBefore.setNextNode(nodeAfter);
 20:          result = nodeToRemove.getData();
 21:          if (givenPosition == numberOfEntries)
 22:             lastNode = nodeBefore;            // Last node was removed
 23:       } // end if
 24:       numberOfEntries--;
 25:    }
 26:    else
 27:       throw new IndexOutOfBoundsException(
 28:                 "Illegal position given to remove operation.");
 29:    return result;                             // Return removed entry
 30: } // end remove
 31: // Version 4.0