You are on page 1of 3

#include<stdio.

h>
#include<stdlib.h>
#define size 6
static int check1=0,check2=size;
struct stack
{
char s[size];
int top;
};
int * insert(int a[],int n,struct stack ss,int i)
{
if(check1==check2)
{
printf("Stack overflow\n");
return;
}
if(i==check1)
{
printf("%d\n",check1);
a[i]=ss.s[ss.top];
check1++;
}
else
{
a[i]=ss.s[ss.top];
check2--;
}
return a;
}
int * delete(int a[],int n,struct stack ss,int i)
{
if(ss.top==-1)
{
printf("Stack underflow\n");
return;
}
else
{
printf("Element to be deleted is %d\n",ss.s[ss.top--]);
if(i==check1)
{
a[i]=0;
check1--;
}
else
{
a[i]=0;
check2--;
}
return a;
}
}
void display(int a[])
{
int i;
for(i=0;i<=size-1;i++)
printf("%d\t",a[i]);
}
main()
{

struct stack st;


struct stack ts;
st.top=-1;
ts.top=-1;
int a[size],choice,k,ele,list,i=0,j=(size)-1,*update;
for(k=0;k<(size);k++)
a[k]=0;
for(;;)
{
printf("\n------------\n1-Insert\n2-Delete\n3-Display\n4-Exit\n-----------\n");
printf("Choice\n");
scanf("%d",&choice);
switch(choice)
{
case 1:printf("in which stack should the element be inserted 1 or 2\
n");
scanf("%d",&list);
if(check1==check2)
{
printf("Stack overflow\n\n");
break;
}
printf("Enter the element to be inserted\n");
scanf("%d",&ele);
if(list==1)
{
st.s[++st.top]=ele;
update=insert(a,size,st,i);
i=i+1;
}
else if(list==2)
{
ts.s[++ts.top]=ele;
update=insert(a,size,ts,j);
j=j-1;
}
else printf("Invalid entry\nTRY AGAIN\n");
break;
case 2:printf("From which stack should the element be poped 1 or 2\n
");
scanf("%d",&list);
if(list==1)
{
update=delete(a,size,st,i-1);
st.top--;
i=i-1;
}
else if(list==2)
{
update=delete(a,size,ts,j+1);
ts.top--;
j=j+1;
}
break;
case 3:display(a);
break;
case 4: exit(0);
}
}

You might also like