Source of 12.16.java


  1: // @author Frank M. Carrano, Timothy M. Henry
  2: // @version 5.0
  3: public T remove(int givenPosition)
  4: {
  5:    T result = null;                           // Return value
  6:    if ((givenPosition >= 1) && (givenPosition <= numberOfEntries))
  7:    {
  8:       // Assertion: !isEmpty()
  9:       if (givenPosition == 1)                 // Case 1: Remove first entry
 10:       {
 11:          result = firstNode.getData();        // Save entry to be removed
 12:          firstNode = firstNode.getNextNode(); // Remove entry
 13:       }
 14:       else                                    // Case 2: Not first entry
 15:       {
 16:          Node nodeBefore = getNodeAt(givenPosition - 1);
 17:          Node nodeToRemove = nodeBefore.getNextNode();
 18:          result = nodeToRemove.getData();    // Save entry to be removed
 19:          Node nodeAfter = nodeToRemove.getNextNode();
 20:          nodeBefore.setNextNode(nodeAfter);  // Remove entry
 21:       } // end if
 22:       numberOfEntries--;                     // Update count
 23:       return result;                         // Return removed entry
 24:    }
 25:    else
 26:       throw new IndexOutOfBoundsException(
 27:                 "Illegal position given to remove operation.");
 28: } // end remove