Circular Queue using Array in C

Description

This program is used to Insert (Enqueue) and Delete (Dequeue) elements from a Circular Queue using Array in C.

#include<stdio.h>
#include<stdlib.h>
#define MAX 5
int queue[MAX];
int front = -1, rear = -1;
void enqueue();
void dequeue();
void display();

main()
{
 int choice;
 do
 {
  printf("\n----MENU----\n");
  printf("1.enqueue\n2.dequeue\n3.display\n4.EXIT\n");
  printf("\nEnter your choice\n");
  scanf("%d",&choice);
  switch(choice)
  {
   case 1:enqueue();break;
   case 2:dequeue();break;
   case 3:display();break;
   case 4:printf("\n~~~~Thank You~~~~\n");break;
   default:printf("\nINVALID INPUT !!!!\n");
  }
 }while(choice!=4);
}

void enqueue()
{
 int value;
 if((rear==MAX-1 && front == 0) || front == rear + 1)
 printf("\nQueue overflow !!!!!\n");
 else
 {
  printf("\nEnter the value to be inserted\n");
  scanf("%d",&value);
  if(front==-1)
  {
   front=0;
   rear=0;
  }
  else if(rear==MAX-1)
  {
   rear=0;
  }
  else rear++;
  queue[rear]=value;
  display();
 }
}


void dequeue()
{
 if(front==-1)
 printf("\nQueue underflow !!!!!\n");
 else if(front==rear)
 {
  front=-1;
  rear=-1;
 }
 else if(front==MAX-1)
  front=0;
 else 
  front++;
  display();
}
void display()
{
 int left,right;
 left=front;
 right=rear;
 if(left==-1)
 printf("\nqueue is empty \n");
 else if(left<=right)
 {
  printf("Elements are:\t");
  while(left<=right)
  {
   printf("%d\t",queue[left]);
   left++;
  }
  
 }
 else
 {
  printf("Elements are:\t");
  while(left<MAX)
  {
   printf("%d\t",queue[left]);
   left++;
  }
  left=0;
  while(left<=right)
  {
   printf("%d\t",queue[left]);
   left++;
  }
   
 }
}

OUTPUT

Circular Queue Output 1 Circular Queue Output 2
Circular Queue Output 3 Circular Queue Output 4

Labels: