Source of Listing7-2.cpp


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

  4: /** Listing 7-2
  5:     @file ArrayStack.cpp */
  6: #include <cassert>       // For assert
  7: #include "ArrayStack.h"  // Header file

  9: template<class ItemType>
 10: ArrayStack<ItemType>::ArrayStack() : top(-1)
 11: {
 12: }  // end default constructor

 14: // Copy constructor and destructor are supplied by the compiler

 16: template<class ItemType>
 17: bool ArrayStack<ItemType>::isEmpty() const
 18: {
 19:         return top < 0;        
 20: }  // end isEmpty

 22: template<class ItemType>
 23: bool ArrayStack<ItemType>::push(const ItemType& newEntry)
 24: {
 25:         bool result = false;        
 26:         if (top < DEFAULT_CAPACITY - 1)  // Does stack have room for newEntry?
 27:         {
 28:                 top++;
 29:                 items[top] = newEntry;
 30:                 result = true;
 31:         }  // end if
 32:    
 33:         return result;
 34: }  // end push

 36: template<class ItemType>
 37: bool ArrayStack<ItemType>::pop()
 38: {
 39:         bool result = false;
 40:         if (!isEmpty())
 41:         {
 42:                 top--;
 43:                 result = true;
 44:         }  // end if
 45:    
 46:         return result;
 47: }  // end pop

 49: template<class ItemType> 
 50: ItemType ArrayStack<ItemType>::peek() const
 51: {
 52:         assert(!isEmpty());  // Enforce precondition during debugging
 53:    
 54:         // Stack is not empty; return top
 55:         return items[top];
 56: }  // end peek
 57: // End of implementation file.