//Doubly Ended Queue
#include<stdio.h>
#include<process.h>
int front=0,rear=-1,q[5];
int main()
{
void insert(int);int deletion();void display();
int x,data,ch;
printf("\n\n***MENU***\n\n1.Insertion\n\n2.Deletion\n\n3.Display\n\n4.Exit\n\n");
do
{
printf("\n\nEnter your choice\n\n");
scanf("%d",&ch);
switch(ch)
{
case 1:
printf("\n\nEnter data to insert in Queue\n\n");
scanf("%d",&data);
insert(data);
break;
case 2:
x=deletion();
printf("\n\nDeleted data is %d\n\n",x);
/*here if you remove break; statememt from program then after deletion
it will move to case 3 and call dispaly function*/
case 3:
display();
break;
case 4:
exit(1);
default:
printf("\n\nWrong Choice Try again\n\n");
}
}while(ch!=4);
}
void insert(int x)
{
int p;
if(front==0&&rear==4)
{
printf("\n\nDQueue is Overflow\n");
}
else
{
printf("\nPress 1/2 to insert at Rear_end/Front_end\n\n ");
scanf("%d",&p);
if(p==1)
{
if(rear<4)
{
rear++;
q[rear]=x;
}
else
printf("\n\nCan not insert at Rear_end\n\n");
}
else if(p==2)
{
if(front>0)
{
front--;
q[front]=x;
}
else
printf("\n\nCan not insert at Front_end\n\n");
}
}
}
int deletion()
{
int x,p;
if(rear==front-1)
{
printf("\n\nDQueue is Underflow\n\n");
}
else
{
printf("Press 1/2 to Delete at Rear_end/Front_end\n\n");
scanf("%d",&p);
if(p==1)
{
x=q[rear];
rear--;
return(x);
}
/* here no need to write else part because if rear==front-1 is false then it means there is atlest one element
in the queue to delete*/
else if(p==2)
{
x=q[front];
front++;
return(x);
}
}
}
void display()
{
int i;
if(rear==front-1)
printf("\n\nDQueue is Underflow\n\n");
printf("DQueue is ");
for(i=front;i<=rear;i++)
{
printf("%d ",q[i]);
}
}
No comments:
Post a Comment