SOURCE FILE: stackA.cpp


// *********************************************************
// Implementation file StackA.cpp for the ADT stack.
// Array-based implementation.
// *********************************************************
#include "StackA.h"  // header file

stackClass::stackClass(): Top(-1)
{
}  // end default constructor

bool stackClass::StackIsEmpty() const
{
   return bool(Top < 0);
}  // end StackIsEmpty

void stackClass::Push(stackItemType NewItem, bool& Success)
{
   Success = bool(Top < MAX_STACK - 1);

   if (Success)  // if stack has room for another item
   {  ++Top;
      Items[Top] = NewItem;
   }  // end if
}  // end Push

void stackClass::Pop(bool& Success)
{
   Success = bool(!StackIsEmpty());

   if (Success)  // if stack is not empty,
      --Top;     // pop top
}  // end Pop

void stackClass::Pop(stackItemType& StackTop, bool& Success)
{
   Success = bool(!StackIsEmpty());

   if (Success)  // if stack is not empty,
   {  StackTop = Items[Top];  // retrieve top
      --Top;                  // pop top
   }  // end if
}  // end Pop

void stackClass::GetStackTop(stackItemType& StackTop,
                             bool& Success) const
{
   Success = bool(!StackIsEmpty());

   if (Success)               // if stack is not empty,
      StackTop = Items[Top];  // retrieve top
}  // end GetStackTop
// End of implementation file.