Circular queue in c

Circular Queue is a linear data structure in which the operations are performed based on FIFO (First In First Out) principle and the last position is connected back to the first position to make a circle.

In a normal Queue, we can insert elements until the queue becomes full. But once the queue becomes full, we can not insert the next element even if there is a space in front of the queue.

Circular Queue in c using array

#include<stdio.h>

#define MAX 5
int rear=-1;
int front=-1;
int cqueue[MAX];

void insert()
{
    int data;
    if((front==0&&rear==MAX-1)||(front==rear+1))
    {
  printf("\nQueue is Overflow(Full)");
  return;
    }
    if(front==-1)
    {
  front=0; 
  rear=0;
    }
    else if(rear==MAX-1)
     rear=0;  
    else         
       rear=rear+1;
    printf("\nEnter data:");
    scanf("%d",&data);
    cqueue[rear]=data;
}
void del()
{
   if(front==-1)
   {
     printf("\nQueue is Underflow(Empty)");
   }
   printf("\nDeleted data:%d",cqueue[front]);
   if(front==rear)
    {
       front=-1;
       rear=-1;
    }
    else if(front==MAX-1)
   front=0;
    else
     front=front+1;
}
void display()
{
  int fposition=front,rposition=rear;
  if(front==-1)
  {
     printf("\nCQueue is empty");
     return;
  }
  printf("\nCQUEUE Elements:");
  if(fposition<=rposition)
  {
    while(fposition<=rposition)
    {
  printf(" %d",cqueue[fposition]);
  fposition++;
    }
  }
  else
  {
    while(fposition<=MAX-1)
    {
    printf(" %d",cqueue[fposition]);
    fposition++;
    }
    fposition=0;
    while(fposition<=rposition)
    {
      printf(" %d" ,cqueue[fposition]);
      fposition++;
    }
 }
}
int main()
{
  int option;
  while(1)
  {
    printf("\n1.for insert : ");
    printf("\n2.for delete : ");  
    printf("\n3.for display: ");
    printf("\n4.for exit...: ");
    scanf("%d",&option);
    switch(option)
    {
      case 1: insert(); break;
      case 2: del();    break;
      case 3: display(); break;
      case 4:  return 0;
      default:
              printf("\ninvalud option: ");
    }
  }
}

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *