Friday, 7 December 2012

Queue using circular array cpp program

CPP Program to implement a queue using circular array

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
const int max=10;

class queue
{ private:
          int a[max];
          int front,rear;
  public:
          queue(void);
          void addq(int);
          int delq(void);
          void display(void);
          int count(void);
};

queue::queue(void)
{       
front=rear=-1;
}
void queue::addq(int item)
{        if((front==rear+1)||(front==1&&rear==max-1))
          {        cout<<"\n Queue is full. ";
                   return;

          }
          if(front==-1)
                   front=rear=0;
          else
                   if(rear==max-1)
                             rear=0;
                   else
                             rear++;
          a[rear]=item;
}

int queue::delq()
{        int data;
          if(front==-1)
          {        cout<<"\n Queue is empty. ";
                   return NULL ;
          }
          data=a[front];
          if(front==rear)
                   front=rear=-1;
          else
                   if(front==max-1)
                             front=0;
                   else
                             front++;
                             return data;
}

void queue::display()
{        cout<<"(Front)";
          int i=front;
          if(i!=-1)
          {        while(1)
                   {        cout<<a[i]<<" ";
                             if(i==rear)
                                       break;
                             if(i==max-1)
                                       i=0;
                             else
                                       i++;
                   }
          }
          cout<<"(Rear)";
}

int queue::count(void)
{        int count=0;
          int i=front;
          if(i!=-1)
          {        while(1)
                   {        count++;
                              if(i==rear)
                                      break;
                             if(i==max-1)
                                      i=0;
                             else
                                      i++;
                   }
          }
          return count;
}

void main()
{        int c,num; char ch;
          queue q;
          while(1)
          {        clrscr();
                   cout<<"\n Perform the following Queue operations. ";
                   cout<<"\n --------------------------------------- ";
                   cout<<"\n 1.Insert elements. ";
                   cout<<"\n 2.Delete elements. ";
                   cout<<"\n 3.Display full queue content. ";
                   cout<<"\n 4.Exit from program. ";
                   do
                   {        cout<<"\n Select your Choice(1:4) : ";
                             cin>>c;
                   }
                   while((c<1)||(c>4));
          clrscr();
          switch(c)
          { case 1 :
 do
{        cout<<"\n Queue currently has "<<q.count()<<" elements. ";
                             cout<<"\n Enter the new element";
                             cin>>num;
                              q.addq(num);
                             cout<<" Add More(Y/N) : ";
                             cin>>ch;
                 }
                 while((ch=='y')||(ch=='Y'));
                 break;
          case 2 :
int num;
                    do
{        cout<<"\n Queue currently has "<<q.count()<<"             elements. ";
                             if(num==q.delq()!=NULL)
                              cout<<num <<" element is deleted ";
                             cout<<"\n Current Queue is ";
                             q.display();
                             cout<<"\n Delete more(Y/N): ";
                             cin>>ch;
                    }
                    while((ch=='y')||(ch=='Y'));
                    break;
case 3 :       
cout<<"\n Queue Currently has "<<q.count()<<" elements as shown below. ";
                    q.display();
                    break;
           case 4 :
exit(1);
                    break;
          }
          cout<<"\n Press Any Key To Continue...";
          getch();
      }
}

No comments:

Post a Comment