1: // Locates a given entry within this bag.
2: // Returns a reference to the node containing the entry, if located,
3: // or null otherwise.
4: private Node getReferenceTo(T anEntry)
5: {
6: boolean found = false;
7: Node currentNode = firstNode;
8:
9: while (!found && (currentNode != null))
10: {
11: if (anEntry.equals(currentNode.data))
12: found = true;
13: else
14: currentNode = currentNode.next;
15: } // end while
16:
17: return currentNode;
18: } // end getReferenceTo
19:
20:
21: /** Removes one occurrence of a given entry from this bag, if possible.
22: @param anEntry The entry to be removed.
23: @return True if the removal was successful, or false otherwise. */
24: public boolean remove(T anEntry)
25: {
26: boolean result = false;
27: Node nodeN = getReferenceTo(anEntry);
28:
29: if (nodeN != null)
30: {
31: nodeN.data = firstNode.data; // Replace located entry with entry in first node
32: firstNode = firstNode.next; // Remove first node
33: numberOfEntries--;
34: result = true;
35: } // end if
36:
37: return result;
38: } // end remove