Monday, 19 October 2015

C program to implement circular queue

#include<stdio.h>
#include<conio.h>
#define MAX 10
int dqueue[MAX];
int left=-1,right=-1;
int insertright();
int insertleft();
void deleteleft();
void deleteright();
void display();
void main()
{
 int choice,m;
 clrscr();
 while(1)
 {
  clrscr();
  printf("\n\n\t\t\t*****MAIN  MENU******\n\n");
  printf("PRESS 1 : TO INSERT RIGHT\n");
  printf("PRESS 2 : TO DELETE RIGHT\n");
  printf("PRESS 3 : TO DELETE LEFT\n");
  printf("PRESS 4 : TO DISPLAY\n");
  printf("PRESS 5 : TO EXIT\n");
  printf("\n\nenter your choice : ");
  scanf("%d",&choice);
  switch(choice)
  {
   case 1:
    m=insertright();
    printf("\nthe value %d inserted successfully\n",m);
   break;
   case 2:
    deleteright();
   break;
   case 3:
    deleteleft();
   break;
   case 4:
    display();
   break;
   case 5:
    exit(1);
   break;
   default:
    printf("\nERROR.......WRONG CHOICE\n");
  }
 getch();
 }
}
int insertright()
{
 int data;
 printf("\n enter the data to be inserted : ");
 scanf("%d",&data);
 if(left==0 && right==MAX-1 || left==right+1)
 {
  printf("\n overflow ");
  return;
 }
 if(left==-1)
 {
  left=0;
  right=0;
 }
       else if(right==MAX-1 && left>0)
 {
  right=0;
 }
 else
  right++;
 dqueue[right]=data;
 return data;
}
void deleteleft()
{
 if(left==-1)
 {
  printf("\n underflow");
  return;
 }
 else if(left==right)
 {
  left=-1;
  right=-1;
  printf("\n data deleted.....");
  return;
 }
 else
 {
  printf("\n data deleted");
  left++;
 }
}
void deleteright()
{
  if(left==-1)
 {
  printf("\n underflow");
  return;
 }
 if(left==right)
 {
  left=-1;
  right=-1;
  printf("\n data deleted");
  return;
 }
 else
 {
  printf("\n data deleted");
  right--;
 }
}
void display()
{
 int i;
 if(left==-1)
 {
  printf("\n underflow ");
  return;
 }
 if(left<right)
 {
  for(i=left;i<=right;i++)
  {
   printf("\n data : %d",dqueue[i]);
  }
 return;
 }
 else if(left>right)
 {
  for(i=left;i<=MAX-1;i++)
   printf("\n %d",dqueue[i]);
  for(i=0;i<=right;i++)
   printf("\n %d",dqueue[i]);
 }
 else
  printf("\n %d",dqueue[left]);
}

No comments:

Post a Comment