Q. Suggest a method of implementing two stacks in one array such that as long as space is there in an array, you should be capable to add an element in either stack. Using proposed method or technique, write algorithms for push and pop operations for both the discussed stacks.
Ans.
/* Two Stacks Into One Array */
#include
#define MAX 50
int mainarray[MAX];
int top1=-1,top2=MAX;
void push1(int elm)
{
if((top2-top1)==1)
{
clrscr();
printf("\n Array has been Filled !!!");
return;
}
mainarray[++top1]=elm;
}
void push2(int elm)
{
if((top2-top1)==1)
{
clrscr();
printf("\n Array has been Filled !!!");
return;
}
mainarray[--top2]=elm;
}
int pop1()
{
int temp;
if(top1<0)
{
clrscr();
printf(" \n This Stack is Empty !!!");
return -1;
}
temp=mainarray[top1];
top1--;
return temp;
}
int pop2()
{
int temp;
if(top2>MAX-1)
{
clrscr();
printf(" \n This Stack Is Empty !!!");
return -1;
}
temp=mainarray[top2];
top2++;
return temp;
}