Source of 14.16.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(); // Remove entry
 11:       }
 12:       else                                    // Case 2: Not first entry
 13:       {
 14:          Node nodeBefore = getNodeAt(givenPosition - 1);
 15:          Node nodeToRemove = nodeBefore.getNextNode();
 16:          result = nodeToRemove.getData();    // Save entry to be removed
 17:          Node nodeAfter = nodeToRemove.getNextNode();
 18:          nodeBefore.setNextNode(nodeAfter);  // Remove entry
 19:       } // end if
 20:       numberOfEntries--;                     // Update count
 21:       return result;                         // Return removed entry
 22:    }
 23:    else
 24:       throw new IndexOutOfBoundsException(
 25:                 "Illegal position given to remove operation.");
 26: } // end remove
 27: // Version 4.0