#include <iostream>
using namespace std;
int stsize = 4;
int estack = 0;
int *mstack;
void push()
{
if (estack==stsize){
cout<<"Stack is full"<<endl;
return;
}
int el=0;
cout<<"Element to Push? ";
cin>>el;
cout<<endl;
mstack[estack]=el;
estack++;
}
int pop()
{
if (estack==0) {
cout<<"Stack is empty"<<endl;
return -1;
}
int el=0;
estack--;
el=mstack[estack];
cout<<"Element is "<<el<<endl;
return el;
}
void setstacksize(){
int ssi = 0;
cout<<"Enter new stack size: ";
cin>>ssi;
cout<<endl;
stsize=ssi;
return;
}
void clearstack()
{
estack=0;
return;
}
void dumpstack()
{
cout<<"Stack..."<<endl;
cout<<endl;
cout<<"Stack Size: "<<stsize<<endl;
cout<<"Stack Element: "<<estack<<endl;
cout<<"El."<<"Value"<<endl;
for (int i=0;i<estack;i++){
cout<<i<<mstack[i]<<endl;
}
return;
}
int main () {
mstack = new int[stsize];
bool ext=false;
while (!ext) {
cout<<"Stack Demo"<<endl;
cout<<endl;
cout<<"1) Push element"<<endl;
cout<<"2) Pop element"<<endl;
cout<<"3) Set stack Size"<<endl;
cout<<"4) Clear Stack"<<endl;
cout<<"5) Write Stack"<<endl;
cout<<"99) Exit"<<endl;
int wyb=0;
cin>>wyb;
cout<<endl;
switch (wyb)
{
case 99: ext=true;
break;
case 1: push();
break;
case 2: pop();
break;
case 3: setstacksize();
break;
case 4: clearstack();
break;
case 5: dumpstack();
break;
}
}
return 0;
}