// ============================================================================ // Name: Bracket-matching example of stack usage File: stack.cpp // Author: Michael and Alice Fischer Copyright: January 2009 // Modified September 2016 // ============================================================================ #include "stack.hpp" //----------------------------------------------------------------------- // Prints the stack between markers "Bottom~~" and "~~Top". std::ostream& Stack:: print(ostream& out) const { out << "The " << name << " stack contains: Bottom~~"; T* p = s; // Scanner & end pointer for data T* pend = s + top; for (; p < pend; ++p) out << ' ' << *p; return out << " ~~Top"; } //----------------------------------------------------------------------------- // Push c onto the stack. Grow the stack if full. void Stack:: push(T c) { if (top == max) { // If stack is full, allocate more space. say("-Doubling stack length-"); T* temp = s; // grab old array. s = new T[max *= 2]; // make bigger one, for (int k=0; k