Source of Listing17-4.cpp


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

  4: // Listing 17-4.

  6: /** Heap-based implementation of the ADT priority queue.
  7:  @file HeapPriorityQueue.cpp */

  9: #include "HeapPriorityQueue.h"

 11: template<class ItemType>
 12: HeapPriorityQueue<ItemType>::HeapPriorityQueue()
 13: {
 14:    ArrayMaxHeap<ItemType>();
 15: }  // end constructor

 17: template<class ItemType>
 18: bool HeapPriorityQueue<ItemType>::isEmpty() const
 19: {
 20:    return ArrayMaxHeap<ItemType>::isEmpty();
 21: }  // end isEmpty

 23: template<class ItemType>
 24: bool HeapPriorityQueue<ItemType>::enqueue(const ItemType& newEntry)
 25: {
 26:    return ArrayMaxHeap<ItemType>::add(newEntry);
 27: }  // end enqueue

 29: template<class ItemType>
 30: bool HeapPriorityQueue<ItemType>::dequeue()
 31: {
 32:    return ArrayMaxHeap<ItemType>::remove();
 33: }  // end dequeue

 35: template<class ItemType>
 36: ItemType HeapPriorityQueue<ItemType>::peekFront() const throw(PrecondViolatedExcept)
 37: {
 38:    try
 39:    {
 40:       return ArrayMaxHeap<ItemType>::peekTop();
 41:    }
 42:    catch (PrecondViolatedExcept e)
 43:    {
 44:       throw PrecondViolatedExcept("Attempted peek into an empty priority queue.");
 45:    }  // end try/catch
 46: }  // end peekFront