//Stack.cc
#include <iostream>
#include "Stack.hh"
void Stack::push(double c) {
if (full()) {
std::cout << "Stack::push() Error: stack is full" << std::endl ;
grow( DELTA );
}
s[count++] = c ;
double Stack::pop() {
if (empty()) {
std::cout << "Stack::pop() Error: stack is empty" << std::endl ;
return 0 ;
return s[--count] ;
void Stack::inspect() {
for ( int i = nitems() - 1; i >= 0; i-- )
{
std::cout << i << ": " << s[i] << std::endl;
void Stack::init( int in_size ) {
bufsize = in_size ;
count = 0 ;
s = new double[in_size];
void Stack::grow( int delta ) {
std::cout << "Growing by " << delta << std::endl;
double* newbuf = new double[ bufsize + delta ];
// Copy elements
for ( int i=0; i < count ; i++ )
newbuf[i] = s[i];
// Delete old Stack
delete[] s;
// Assign pointer
s = newbuf;