#include<stdio.h>
#include<conio.h>
#define MAX 50
struct queue
{
int a[MAX];
int rear,front;
}
st;
void
enqueuefront(int x);
void
enqueuerear(int x);
void
dequeuefront();
void
dequeuerear();
void display();
void main()
{
int op,x;
st.rear=st.front=-1;
do
{
printf("\n1.Insertion from
rear\n2.Insertion from front\n3.Deletion from rear\n4.Deletion from
front\n5.Print\n6.Exit");
printf("\nEnter choice");
scanf("^D",&op);
switch(op)
{
case
1:if((st.rear+1)%MAX==st.front)
printf("\nFull
queue");
else
enqueuerear(x);
break;
case
2:if((st.rear+1)%MAX==st.front)
printf("\nFull
queue");
else
enqueuefront(x);
break;
case 3:if(st.rear==-1)
printf("\nEmpty
queue");
else
{
dequeuerear();
}
break;
case 4:if(st.front==-1)
printf("\nEmpty
queue");
else
{
dequeuefront();
}
break;
case 5:display();
break;
}
}while(op!=6);
getch();
}
void
enqueuerear(int x)
{
printf("\nEnter data:");
scanf("%d",&x);
if(st.rear==-1&&st.front==-1)
{
st.rear=0;st.front=0;
st.a[0]=x;
}
else
{
st.rear=(st.rear+1)%MAX;
st.a[st.rear]=x;
}
}
void
enqueuefront(int x)
{
printf("\nEnter data:");
scanf("%d",&x);
if(st.rear==-1&&st.front==-1)
{
st.rear=0;st.front=0;
st.a[0]=x;
}
else
{
st.front=(st.front-1+MAX)%MAX;
st.a[st.front]=x;
}
}
void
dequeuerear()
{
int y;
if(st.rear==st.front)
{
y=st.a[st.rear];
st.front=-1;
st.rear=-1;
}
else
{
y=st.a[st.rear];
st.rear=(st.rear-1+MAX)%MAX;
}
printf("\nDeleted
element=%d",y);
}
void
dequeuefront()
{
int y;
if(st.rear==st.front)
{
y=st.a[st.front];
st.front=-1;
st.rear=-1;
}
else
{
y=st.a[st.front];
st.front=(st.front+1)%MAX;
}
printf("\nDeleted
element=%d",y);
}
void display()
{
int i;
if(st.rear==-1&&st.front==-1)
printf("\nEmpty queue");
else
{
printf("\nQueue is:");
i=st.front;
while(i!=st.rear)
{
printf("<%d>",st.a[i]);
i=(i+1)%MAX;
}
printf("<%d>",st.a[st.rear]);
}
}
No comments:
Post a Comment