104 lines
1.3 KiB
C++
104 lines
1.3 KiB
C++
Stack implementation as a class
|
|
|
|
# include<iostream.h>
|
|
# include<process.h>
|
|
# include<conio.h>
|
|
# define SIZE 20
|
|
|
|
class stack
|
|
{
|
|
int a[SIZE];
|
|
int tos; // Top of Stack
|
|
public:
|
|
stack();
|
|
void push(int);
|
|
int pop();
|
|
int isempty();
|
|
int isfull();
|
|
};
|
|
stack::stack()
|
|
{
|
|
tos=0; //Initialize Top of Stack
|
|
}
|
|
|
|
int stack::isempty()
|
|
{
|
|
return (tos==0?1:0);
|
|
}
|
|
int stack::isfull()
|
|
{
|
|
return (tos==SIZE?1:0);
|
|
}
|
|
|
|
void stack::push(int i)
|
|
{
|
|
if(!isfull())
|
|
{
|
|
a[tos]=i;
|
|
tos++;
|
|
}
|
|
else
|
|
{
|
|
cerr<<"Stack overflow error !
|
|
Possible Data Loss !";
|
|
}
|
|
}
|
|
int stack::pop()
|
|
{
|
|
if(!isempty())
|
|
{
|
|
return(a[--tos]);
|
|
}
|
|
else
|
|
{
|
|
cerr<<"Stack is empty! What to pop...!";
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
stack s;
|
|
int ch=1,num;
|
|
while(ch!=0)
|
|
{
|
|
cout<<"Stack Operations Mani Menu
|
|
1.Push
|
|
2.Pop
|
|
3.IsEmpty
|
|
4.IsFull
|
|
0.Exit
|
|
|
|
";
|
|
cin>>ch;
|
|
switch(ch)
|
|
{
|
|
case 0:
|
|
exit(1); //Normal Termination of Program
|
|
case 1:
|
|
cout<<"Enter the number to push";
|
|
cin>>num;
|
|
s.push(num);
|
|
break;
|
|
case 2:
|
|
cout<<"Number popped from the stack is: "<<s.pop()<<endl;
|
|
break;
|
|
case 3:
|
|
(s.isempty())?(cout<<"Stack is empty.
|
|
"):(cout<<"Stack is not empty.
|
|
");
|
|
break;
|
|
case 4:
|
|
(s.isfull())?(cout<<"Stack is full.
|
|
"):(cout<<"Stack is not full.
|
|
");
|
|
break;
|
|
default:
|
|
cout<<"Illegal Option.
|
|
Please try again
|
|
";
|
|
}
|
|
}//end of while
|
|
getch();
|
|
}
|