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