Introducing Radical.sh

Forget Code launches a powerful code generator for building API's

Enqueue and Dequeue in C


//ENQUEUE & DEQUEUE

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define SIZE 5
void display();
int empty();
int full();
int enqueuerear(int value);
int dequeuerear(int *value);
int enqueuefront(int value);
int dequeuefront(int *value);
int size();
void view();
int queue[SIZE],front=-1,rear=-1;
void main()
{
int status,choice,data;
clrscr();
display();
while(1)
{
printf("\nEnter ur choice");
scanf("%d",&choice);
switch(choice)
{
case 0:
display();
break;
case 1:
printf("\n enter the element:");
fflush(stdin);
scanf("%d",&data);
status=enqueuefront(data);
if(status==-1)
printf("dequeue overflow on enqueue at front");
break;
case 2:
printf("\n enter the element");
fflush(stdin);
scanf("%d",&data);
status=enqueuerear(data);
if(status==-1)
printf("dequeue overflow on enqueue at rear");
break;
case 3:
status=dequeuefront(&data);
if(status==-1)
printf("\ndequeue underflow on dequeue at front");
else
printf("\n the dequeue value is %d",data);
break;
case 4:
status=dequeuerear(&data);
if(status==-1)
printf("\ndequeue underflow on dequeue at rear");
else
printf("\n the dequeue value is %d",data);
break;
case 5:
printf("number of elements in dequeue id %d",size());
break;
case 6:
view();
break;
default:
printf("\n end of run");
exit(0);
}}}
void display()
{
printf("\n dequeue using array");
printf("\n\t 0.view menu");
printf("\n\t 1.enqueue at front");
printf("\n\t 2.enqueue at rear");
printf("\n\t 3.dequeue at front");
printf("\n\t 4.dequeue at rear");
printf("\n\t 5.size of the queue");
printf("\n\t 6.view");
printf("\n\t 7.exit");
}
int empty()
{
extern int queue[],front,rear;
if(front==-1 && rear==-1)
return 1;
else
return 0;
}
int full()
{
extern int queue[],front,rear;
if(rear==(SIZE - 1))
return 1;
else
return 0;
}
int enqueuefront(int value)
{
extern int queue[],front,rear;
if(empty())
front=rear=0;
else if(full())
return -1;
else
front =front -1;
queue[front]=value;
return 0;
}
int enqueuerear(int value)
{
extern int queue[],front,rear;
if(empty())
front=rear=0;
else if(full())
return -1;
else
rear =rear + 1;
queue[rear]=value;
return 0;
}
int dequeuefront(int *value)
{
extern int queue[],front,rear;
if(empty())
return -1;
*value=queue[front];
if(front==rear)
front = rear = -1;
else
front = front + 1;
return 0;
}
int dequeuerear(int *value)
{
extern int queue[],front,rear;
if(empty())
return -1;
*value=queue[rear];
if(front==rear)
front= rear = -1;
else
rear = rear - 1;
return 0;
}
int size()
{
extern int queue[],front,rear;
if(empty())
return 0;
return(rear -front + 1);
}
void view()
{
extern int queue[],front,rear;
int f;
if(empty())
{
printf("\n dequeue is empty");
return;
}
printf("\n content of the dequeue...\n Front ->");
for(f=front;f!=rear;f=f+1)
printf("%d -->",queue[f]);
printf("%d ->REAR",queue[f]);
if(full())
printf("\n deque if full");
}