Source of remove.cpp


  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