/* 03StackConstructor.cpp
  What: Improvement upon the initial version of the stack class.
        This one uses constructors (but not a destructor).
Author: Niall Madden
  When: 01 Feb 2017 (CS319 - Week 4)
  More: http://www.maths.nuigalway.ie/~niall/CS319/Week04    */

#include <iostream>

#define MAX_STACK 10

class stack {
private:
  char *contents;
  int top;
public:
  stack (void);
  stack (unsigned int StackSize);
  void init(void );
  void push(char c);
  char pop(void );
};

stack::stack(void)
{
  top=0;
  contents = new char[MAX_STACK];
}

stack::stack(unsigned int StackSize)
{
  top=0;
  contents = new char[StackSize];
}

void stack::push(char c)
{
  contents[top]=c;
  top++;
}

char stack::pop(void)
{
  top--;
  return(contents[top]);
}


int main(void )
{
  stack s1(6);

  std::cout << "Pushing CS319" << std::endl;
  s1.push('C');
  s1.push('S');
  s1.push('3');
  s1.push('1');
  s1.push('9');

  std::cout << "Popping ... " << std::endl;

  std::cout << s1.pop() << std::endl;
  std::cout << s1.pop() << std::endl;
  std::cout << s1.pop() << std::endl;
  std::cout << s1.pop() << std::endl;
  std::cout << s1.pop() << std::endl;

  return (0);
}

