Stack implementation using arrays


 

#include<iomanip.h>

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

 

//************************class item*******************************************

 

class item

{      public:

 

 

      int number;

      char string[20];

 

};

 

 

//************************class stack********************************************

const int stacksize=5;

 

class stack

{

 

private:

 

 

 

      item itm[stacksize];

      int pointer;

      int counter;

 

public:

 

      stack();

      void push(int x, char str[]);

      item pop();

      bool IsEmpty() const;

      bool IsFull() const;

      int size();

      void EmptyStack();

 

};

 

//*************************stack()******************************************

 

stack::stack()

{

      pointer = -1;

      counter = 0;

 

}

 

//************************ISEMPTY()******************************************

 

bool stack::IsEmpty() const

{

 

return pointer==-1;

 

}

 

bool stack::IsFull() const

{

      return pointer==stacksize-1;

 

}

 

//*************************POP()******************************************

 

item stack::pop()

{

      item temp;

     

            if(pointer ==-1)

            {

                  cout<<"Attempt to pop an empty stack!"<<endl;

                  exit(1);

            }

 

            temp = itm[pointer];

            pointer--;

            counter--;

            return temp;

}

 

//***********************PUSH()*********************************************

 

 

void stack::push(int x, char str[])

{

 

      if(pointer ==stacksize-1)

      {

            cout<<"Stack overflow!"<<endl;

            exit(1);

      }

 

      pointer++; counter++;

      itm[pointer].number=x;

      strcpy(itm[pointer].string,str);

 

}

 

//***********************EMPTYSTACK()*******************************************

 

void stack::EmptyStack()

{

      pointer = -1;

      counter=0;

}

 

int stack::size()

{

      return counter;

}