Source of dequeue.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 LinkedQueue<ItemType>::dequeue()
  6: {
  7:    bool result = false;
  8:    if (!isEmpty())
  9:    {
 10:       // Queue is not empty; remove front
 11:       auto nodeToDeletePtr = frontPtr;
 12:       if (frontPtr == backPtr)
 13:       {  // Special case: one node in queue
 14:          // Set frontPtr and backPtr to nullptr
 15:          frontPtr.reset();
 16:          backPtr.reset();
 17:       }
 18:       else
 19:          frontPtr = frontPtr–>getNext();
 20:       
 21:       // Maintain an accurate reference count for first node
 22:       nodeToDeletePtr –>setNext(nullptr);
 23:       
 24:       // Removed node will be deallocated when method ends
 25:       result = true;
 26:    }  // end if
 27:    
 28:    return result;
 29: }  // end dequeue