1: // Created by Frank M. Carrano and Timothy M. Henry. 2: // Copyright (c) 2017 Pearson Education, Hoboken, New Jersey. 4: template<class ItemType> 5: bool LinkedBag<ItemType>::remove(const ItemType& anEntry) 6: { 7: Node<ItemType>* entryNodePtr = getPointerTo(anEntry); 8: bool canRemoveItem = !isEmpty() && (entryNodePtr != nullptr); 9: if (canRemoveItem) 10: { 11: // Copy data from first node to located node 12: entryNodePtr->setItem(headPtr->getItem()); 13: 14: // Delete first node 15: Node<ItemType>* nodeToDeletePtr = headPtr; 16: headPtr = headPtr->getNext(); 17: 18: // Return node to the system 19: nodeToDeletePtr->setNext(nullptr); 20: delete nodeToDeletePtr; 21: nodeToDeletePtr = nullptr; 22: 23: itemCount--; 24: } // end if 25: 26: return canRemoveItem; 27: } // end remove