Saturday, 28 April 2012

Array Implementation of Circular Queue in C


#include<stdio.h>
#include<conio.h>
#define SIZE 5
int front,rear;
void main()
{
 void insert(int[],int);
 void del(int[]);
 void display(int[]);
 int Q[SIZE],data;
 char choice;
 front=rear=-1;
 do
 {
  clrscr();
  printf("\nQueue size = %d\n",SIZE);
  printf("\nEnter : i - Insert, d - Delete, q - Quit :");
  scanf("%c",&choice);
  switch(choice)
  {
   case 'i':
   case 'I':
    printf("\nEnter the data:");
    scanf("%d",&data);
    insert(Q,data);
    break;
   case 'd':
   case 'D':
    del(Q);
    break;
   case 'q':
   case 'Q':
    exit(0);
   default:
    printf("\nInvalid Option!\n\n");
    getch();
    continue;
  }
  printf("\nQueue after the operation performed:\n\n");
  display(Q);
  fflush(stdin);
  getch();
 }while(1);
}

void insert(int Q[],int data)
{
 if(rear==SIZE-1)
 {
  rear=0;
 }
 else
 {
  rear++;
 }
 if(rear==0)
 {
  printf("\nQueue Overflow!");
  exit(1);
 }
 Q[rear]=data;
 if(front==-1;
 {
  front++;
 }
}

void del(int Q[])
{
 if(front<0)
 {
  printf("\nQueue Underflow!\n");
  exit(1);
 }
 else
 {
  printf("\nDeleted element: %d\n",Q[front]);
  if(front==rear)
  {
   front=rear=-1;
  }
  else
  {
   if(front==SIZE-1)
   {
    front=0;
   }
   else
   {
    front++;
   }
  }
 }
}

void display(int Q[])
{
 int position;
 if(front>=0)
 {
  printf("\nTotal Size of the Queue: %d\n");
  printf("\nQueue after operation performed: \n\n");
  if(front<=rear)
  {
   for(position=front;position<=rear;position++)
   {
    printf("%d\t",Q[position]);
   }
  }
  else
  {
   for(position=front;position<=SIZE;position++)
   {
    printf("%d\t",Q[position]);
   }
   for(position=0;position<=rear;position++)
   {
    printf("%d\t",Q[position]);
   }
  }
 printf("\n\nFront = %d\t Rear = %d\n",front,rear);
}

No comments:

Post a Comment