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