Source of Listing14-2.cpp


  1: //  Created by Frank M. Carrano and Timothy M. Henry.
  2: //  Copyright (c) 2017 Pearson Education, Hoboken, New Jersey.

  4: // Listing 14-2.

  6: /** ADT queue: ADT list implementation.
  7:  @file ListQueue.cpp */
  8: #include "ListQueue.h" // Header file
  9: #include <memory>

 11: template<class ItemType>
 12: ListQueue<ItemType>::ListQueue()
 13:                    : listPtr(std::make_unique<LinkedList<ItemType>>())
 14: {
 15: }  // end default constructor

 17: template<class ItemType>
 18: ListQueue<ItemType>::ListQueue(const ListQueue& aQueue)
 19:                    : listPtr(aQueue.listPtr)
 20: {
 21: }  // end copy constructor

 23: template<class ItemType>
 24: ListQueue<ItemType>::~ListQueue()
 25: {
 26: }  // end destructor

 28: template<class ItemType>
 29: bool ListQueue<ItemType>::isEmpty() const
 30: {
 31:    return listPtr–>isEmpty();
 32: }  // end isEmpty

 34: template<class ItemType>
 35: bool ListQueue<ItemType>::enqueue(const ItemType& newEntry)
 36: {
 37:    return listPtr–>insert(listPtr–>getLength() + 1, newEntry);
 38: }  // end enqueue

 40: template<class ItemType>
 41: bool ListQueue<ItemType>::dequeue()
 42: {
 43:    return listPtr–>remove(1);
 44: }  // end dequeue

 46: template<class ItemType>
 47: ItemType ListQueue<ItemType>::peekFront() const throw(PrecondViolatedExcept)
 48: {
 49:    if (isEmpty())
 50:       throw PrecondViolatedExcept("peekFront() called with empty queue.");
 51:       
 52:    // Queue is not empty; return front
 53:    return listPtr–>getEntry(1);
 54: }  // end peekFront
 55: // end of implementation file