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