// stack is sequential list can be inserted or deleted at the top
//seqstack is a stack using array
#include "stdafx.h"
#include<iostream>
using namespace std;
class pushonfull
{
private:
int value;
public:
pushonfull(int item):value(item)
{}
int Value()
{
return value;
}
};
class poponempty
{};
class seqstack
{
private:
int* data;
int maxstacksize;
int top;
public:
seqstack(int n);
~seqstack(void);
void pushitem(const int item);
int pop(void);
};
seqstack::seqstack(int n)
{
data=new int[n];
maxstacksize=n;
top=0;
}
seqstack::~seqstack(void)
{
delete data;
}
void seqstack::pushitem(const int item)
{
if(top==maxstacksize)
throw pushonfull(item);
data[top]=item;
top++;
}
int seqstack::pop(void)
{
if(top==0)
throw poponempty();
top--;
return data[top];
}
int _tmain(int argc, _TCHAR* argv[])
{
int i;
seqstack mystack(10);
try
{
for(i=0;i<11;i++)
mystack.pushitem(i);
}
catch(pushonfull obj)
{
cout<<"stack is full"<<endl;
cout<<"the element cannot be inserted is "<<obj.Value()<<endl;
}
try
{
for(i=0;i<11;i++)
cout<<mystack.pop()<<" ";
}
catch(poponempty)
{
cout<<" stack is empty"<<endl;
}
return 0;
}