Showing posts with label Queue Implementation. Show all posts
Showing posts with label Queue Implementation. Show all posts

Circular Queue in Java using abstract class

import java.io.*;
abstract class que
{
    abstract void insert(int val);
    abstract void del();
    abstract void display();
}
public class cq extends que
{
    int a[],front,rear,n;
    cq(int cap)
    {
        n=cap;
        front=-1;
        rear=-1;
        a=new int[n];
    }
    void insert(int val)
    {
        if(front==0 && rear==n-1 || rear==front-1)
            System.out.println("Queue overflow... \n");
        else if(front==-1 && rear==-1)
        {
            front=0;
            a[++rear]=val;
        }
        else if(rear==n-1)
        {
            rear=0;
            a[rear]=val;
        }
        else
            a[++rear]=val;
    }
    void del()
    {
        if(front==-1)
            System.out.println("Queue underflow... \n");
        else if(front==rear)
        {
            front=-1;
            rear=-1;
        }
        else if(front==n-1)
            front=0;
        else front++;
    }
    void display()
    {
        int i;
        if(front < 0)
            System.out.println("Queue underflow...\n");
        else if(rear>=front)
        {
            System.out.println("Queue : ");
            for(i=front;i<=rear;i++)
                System.out.print(a[i] + "   ");
            System.out.println();
        }
        else
        {
            System.out.println("Queue : ");
            for(i=front;i<n;i++)
                System.out.print(a[i] + "   ");
            for(i=0;i<=rear;i++)
                System.out.print(a[i] + "   ");
        }
    }
    public static void main(String args[])throws IOException
    {
        int ch,val,cap;
        System.out.println("\nProgram to implement circular queue in java : \n");
        System.out.println("Enter queue capacity : ");
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        cap=Integer.parseInt(br.readLine());
        cq obj=new cq(cap);
        do
        {
            System.out.print("\n[1] Insert [2] Delete [3] Display [4] Exit \n");
            System.out.print("\nEnter your choice : ");
            ch=Integer.parseInt(br.readLine());
            switch(ch)
            {
                case 1: 
                    System.out.println("Enter value to insert : ");
                    val=Integer.parseInt(br.readLine());
                    obj.insert(val);
                    obj.display();
                    break;

                case 2:
                    obj.del();
                    obj.display();
                    break;
                
                case 3:
                    obj.display();
                    break;
            
                case 4: break;
                
                default : System.out.println("Enter correct choice .... \n");
                    break;
            }
        }while(ch!=4);
    }
}

Implement Circular queue in C++

#include<iostream.h> 
#include<stdio.h> 
int display_menu(); 
class circularqueue 
{ 
  int arr[10]; 
  int front,rear; 
  int size; 
  public: 
     circularqueue() 
     { 
      front=0; 
      rear=0; 
      size=10; 
     } 
     void display(); 
     void enqueue(); 
     void delete_element(); 
}; 
void circularqueue :: display() 
{ 
 cout<<endl; 
 if(front!=0 && rear!=0) 
 { 
        int i=front; 
        cout<<"arr["<<i<<"] :"<<arr[i]<<endl; 
        while(i!=rear) 
        { 
         i=(i % size)+1; 
         cout<<"arr["<<i<<"] :"<<arr[i]<<endl; 
        } 
 } 
 else 
 { 
    cout<<"Queue is empty"<<endl; 
 } 
 getch(); 
} 
void circularqueue :: enqueue() 
{ 
 cout<<endl; 
 if(front==0 && rear==0) 
 { 
  cout<<"Enter Number to enqueue at Position arr["<<rear+1<<"] :"; 
  cin>>arr[1]; 
  rear=1; 
  front=1; 
 } 
 else 
 { 
  int next=(rear % size)+1; 
  if(next==front) 
  { 
   cout<<"Queue is Full ..."; 
   getch(); 
  } 
  else 
  { 
   cout<<"Enter Number to enqueue at Position arr["<<next<<"] :"; 
   cin>>arr[next]; 
   rear=next; 
  } 
 } 
} 
void  circularqueue :: delete_element() 
{ 
 cout<<endl; 
 if(rear==0 && front==0) 
 { 
   cout<<"Queue is empty ..."; 
   getch(); 
   return; 
 } 
 if(rear==front) 
 { 
  rear=0; 
  front=0; 
 } 
 else 
 { 
  front=(front % size)+1; 
 } 
} 
void main() 
{ 
 circularqueue cq1; 
 while(1) 
 { 
  switch(display_menu()) 
  { 
    case 1: cq1.enqueue(); 
        break; 
    case 2: cq1.delete_element(); 
        break; 
    case 3: cq1.display(); 
        break; 
    case 4: exit(1); 
  } 
 } 
} 
int display_menu() 
{ 
 int c; 
 clrscr(); 
 cout<<endl; 
 cout<<"| 1 | : Enqueue element"<<endl; 
 cout<<"| 2 | : Delete element"<<endl; 
 cout<<"| 3 | : Display"<<endl; 
 cout<<"| 4 | : Exit"<<endl; 
 cout<<"Enter your Choice :"; 
 cin>>c; 
 return c; 
}/*Code for Program to create a circular queue in C++ Programming*/ 
#include<iostream.h> 
#include<stdio.h> 
int display_menu(); 
class circularqueue 
{ 
  int arr[10]; 
  int front,rear; 
  int size; 
  public: 
     circularqueue() 
     { 
      front=0; 
      rear=0; 
      size=10; 
     } 
     void display(); 
     void enqueue(); 
     void delete_element(); 
}; 
void circularqueue :: display() 
{ 
 cout<<endl; 
 if(front!=0 && rear!=0) 
 { 
        int i=front; 
        cout<<"arr["<<i<<"] :"<<arr[i]<<endl; 
        while(i!=rear) 
        { 
         i=(i % size)+1; 
         cout<<"arr["<<i<<"] :"<<arr[i]<<endl; 
        } 
 } 
 else 
 { 
    cout<<"Queue is empty"<<endl; 
 } 
 getch(); 
} 
void circularqueue :: enqueue() 
{ 
 cout<<endl; 
 if(front==0 && rear==0) 
 { 
  cout<<"Enter Number to enqueue at Position arr["<<rear+1<<"] :"; 
  cin>>arr[1]; 
  rear=1; 
  front=1; 
 } 
 else 
 { 
  int next=(rear % size)+1; 
  if(next==front) 
  { 
   cout<<"Queue is Full ..."; 
   getch(); 
  } 
  else 
  { 
   cout<<"Enter Number to enqueue at Position arr["<<next<<"] :"; 
   cin>>arr[next]; 
   rear=next; 
  } 
 } 
} 
void  circularqueue :: delete_element() 
{ 
 cout<<endl; 
 if(rear==0 && front==0) 
 { 
   cout<<"Queue is empty ..."; 
   getch(); 
   return; 
 } 
 if(rear==front) 
 { 
  rear=0; 
  front=0; 
 } 
 else 
 { 
  front=(front % size)+1; 
 } 
} 
void main() 
{ 
 circularqueue cq1; 
 while(1) 
 { 
  switch(display_menu()) 
  { 
    case 1: cq1.enqueue(); 
        break; 
    case 2: cq1.delete_element(); 
        break; 
    case 3: cq1.display(); 
        break; 
    case 4: exit(1); 
  } 
 } 
} 
int display_menu() 
{ 
 int c; 
 clrscr(); 
 cout<<endl; 
 cout<<"| 1 | : Enqueue element"<<endl; 
 cout<<"| 2 | : Delete element"<<endl; 
 cout<<"| 3 | : Display"<<endl; 
 cout<<"| 4 | : Exit"<<endl; 
 cout<<"Enter your Choice :"; 
 cin>>c; 
 return c; 
}

Array Circular Queue in Java

/* Program to implement circular queue in java  */ 

import java.io.*;
public class cqueue
{
   int front=-1,rear=-1;
   void insert(int a[],int n)throws IOException
    {
        int val;
        System.out.print("\nInput Element : ");
        BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
        val=Integer.parseInt(br.readLine());
        if(front==0 && rear==n-1)
            System.out.print("\nQueue overflow... \n");
        else if(rear == front - 1)
            System.out.print("\nQueue Overflow...\n");
        else if(front==-1 && rear==-1)
        {
            front=0;
            a[++(rear)]=val;
        }
        else if(rear==n-1)
        {
            rear=0;
            a[rear]=val;
        }
        else
            a[++(rear)]=val;
    }
    void del(int a[],int n)
    {
        if(front==-1)
          System.out.print("\nQueue underflow ... \n");
        else if(front == rear)
        {
            front=-1;
            rear=-1;
        }
        else if(front==n-1)    front=0;
        else (front)++;
    }
    void display(int a[],int n)
    {
        int i;
        if(front<0)
           System.out.print("\nQueue underflow ... \n");
        else if(rear >= front)
        {
            System.out.print("\nQueue :  ");
            for(i=front;i<=rear;i++)
                System.out.print(a[i] + " ");
        }
        else
        {
            System.out.print("\nQueue : ");
            for(i=front;i<n;i++)
                System.out.print(a[i] + " ");
            for(i=0;i<=rear;i++)
                System.out.print(a[i] + " ");
        }
       
    }
    public void main(String args[]) throws IOException
    {
            System.out.println("Program to implement circular queue : \n");
            int n,ch;
            BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
            System.out.print("Enter array capacity : ");
            n=Integer.parseInt(br.readLine());
            int [] a;
            a=new int[n];
            do
            {
                System.out.println("\n[1] Insert  [2] Delete  [3] Display   [4] Exit\n");
                System.out.print("Enter your choice : ");
                BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
                ch=Integer.parseInt(br1.readLine());
                switch(ch)
                {
                    case 1:
                            insert(a,n);
                            display(a,n);
                            break;
  
                    case 2:
                            del(a,n);
                            display(a,n);
                            break;
  
                    case 3:
                            display(a,n);
                            break;

                    case 4:
                            break;
      
                    default:System.out.println("Enter correct choice...");
                            break;
                }
            }while(ch!=4);
   }
  
}

Queue using array in java

import java.io.*;
public class queue
{
   int front=-1,rear=-1;
   void insert(int a[],int n)throws IOException
   {
        int x;
        System.out.print("\n Input element : ");
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        x=Integer.parseInt(br.readLine());
        if((front==-1)&&(rear==-1))
        {
            rear++;
            a[++front]=x;
        }    
        else if((rear<n-1)&&(front>-1))
            a[++rear]=x;
        else
            System.out.println("\nQueue overflow !!! ");
   }
   void delete(int a[])
   {
       int x;
        if(front==-1)
            System.out.println("\nQueue underflow !!! ");
        else if(front> rear)
            System.out.println("\nQueue underflow !!! ");
        else
        {
            x=a[front];
            front++;
            System.out.println("\nDeleted element is : " + x);
        }
    }
   void display(int a[],int n)
   {
        int i;
        if(front==-1)
            System.out.println("\nQueue underflow !!! ");
        else if(front>=n)
            System.out.println("\nQueue underflow !!! ");
        else
        {
            System.out.print("\nQueue : ");
            for(i=front;i<=rear;i++)
                System.out.print(a[i] + " ");
        }
   }
   public void main(String args[]) throws IOException
        {
            System.out.println("Program to implement queue : \n");
            int n,ch;
            BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
            System.out.print("Enter array capacity : ");
            n=Integer.parseInt(br.readLine());
            int [] a;
            a=new int[n];
            do
            {
                System.out.println("\n[1] Insert  [2] Delete  [3] Display   [4] Exit\n");
                System.out.print("Enter your choice : ");
                BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
                ch=Integer.parseInt(br1.readLine());
                switch(ch)
                {
                    case 1:
                            insert(a,n);
                            display(a,n);
                            break;
   
                    case 2:
                            delete(a);
                            display(a,n);
                            break;
   
                    case 3:
                            display(a,n);
                            break;

                    case 4:
                            break;
       
                    default:System.out.println("Enter correct choice...");
                            break;
                }
            }while(ch!=4);
   }
   
}

Queue using array in C programming

 /* Program to implement queue using array */

    #include<stdio.h>
    void display(int a[],int n,int *front,int *rear)
    {    
        int i;
        if(*front==-1)
        {
            printf("\nQueue underflow !!! ");
            return;
        }
        else if(*front>=n)
        {
            printf("\nQueue underflow !!! ");
            return;
        }
        else 
        {
            printf("\nQueue : ");
            for(i=*front;i<=*rear;i++)
                printf("  %d  ",a[i]);
        }
        printf("\n");
    }
    void insert(int a[],int n,int *front,int *rear)
    {
        
        int x;
        printf("\n Input element : ");
        scanf("%d",&x);
        if((*front==-1)&&(*rear==-1))
        {
            (*rear)++;
            a[++(*front)]=x;
        }            
        else if((*rear<n-1)&&(*front>-1))
        {
            a[++(*rear)]=x;
        }
        else
        {
            printf("\nQueue overflow !!! ");
            return;
        }
    }
    void delete(int a[],int n,int *front,int *rear)
    {
        int x;
        if(*front==-1)
        {
            printf("\nQueue underflow !!! ");
            return;
        }
        else if(*front> *rear)
        {
            printf("\nQueue underflow !!! ");
            return;
        }
        else
        {
            x=a[*front];
            (*front)++;
            printf("\nDeleted element is : %d\n",x);
        }
    }
    main()
    {
        int front=-1,rear=-1;
        printf("\nProgram to implement queue using array : \n");
        int n;
        printf("\nEnter array capacity : ");
        scanf("%d",&n);
        int a[n];
        int ch;
        do
        {
            printf("\n[1] Insert [2] Delete [3] Display [4] Exit : \n");
            printf("\nEnter your choice : ");
            scanf("%d",&ch);
            switch(ch)
            {
                case 1:
                    insert(a,n,&front,&rear);
                    display(a,n,&front,&rear);
                    break;
                case 2:
                    delete(a,n,&front,&rear);
                    display(a,n,&front,&rear);
                    break;
                case 3:
                    display(a,n,&front,&rear);
                    break;
                case 4:
                    break;
    
                default : printf("\nEnter correct choice : \n");
                      break;
            }
        }while(ch!=4);
    }        

Queue using linked list

 /* Program to implement queue using linked list */

    #include
    #include
    #define new1 (nd *)malloc(sizeof(nd))
    typedef struct queue
    {
        int info;
        struct queue *next;
    }nd;   
    void display(nd *ptr)
    {   
        if(ptr==NULL)
            printf("\nQueue is empty...\n");
        else
        {
            printf("\nQueue  :   ");
            while(ptr!=NULL)
            {
                printf(" %d --> ",ptr->info);
                ptr=ptr->next;
            }
            printf("\b\b\b\b   ");
            printf("\n");
        }
    }
    void insert(nd **ptr)
    {
       
        nd *c=*ptr;
        if(*ptr==NULL)
        {
            *ptr=new1;
            printf("\nEnter the element : ");
            scanf("%d",&(*ptr)->info);
            (*ptr)->next=NULL;
        }
        else
        {
            nd *t;
            t=new1;
            printf("\nEnter the element : ");
            scanf("%d",&t->info);
            while(c->next!=NULL)
                c=c->next;
            t->next=NULL;
            c->next=t;
        }
    }
    void delete(nd **ptr)
    {
        nd *c=*ptr,*t=*ptr;
        if(*ptr==NULL)
            printf("\nQueue is empty...");
        else if(t->next==NULL)        // If queue contains single node
        {
            *ptr=NULL;
            free(t);
        }
        else
        {
            *ptr=c->next;
            free(c);
        }
    }
    main()
    {
        nd *h=NULL;
        printf("\nProgram to implement queue using linked list : \n");
        int ch;
        do
        {
            printf("\n[1] Insert [2] Delete [3] Display [4] Exit : \n");
            printf("\nEnter your choice : ");
            scanf("%d",&ch);
            switch(ch)
            {
                case 1:
                    insert(&h);
                    display(h);
                    break;
                case 2:
                    delete(&h);
                    display(h);
                    break;
                case 3:
                    display(h);
                    break;
                case 4:
                    break;
                default : printf("\nEnter correct choice : \n");
                      break;
            }
        }while(ch!=4);
    }        


Deque using linked list

/*  Program to implement dequeue using linked list  */
    #include
    #include
    #define new1 (nd *)malloc(sizeof(nd))
    typedef struct deque
    {
        int info;
        struct deque *next;
    }nd;
    void display(nd *ptr)
    {   
        if(ptr==NULL)
            printf("\nQueue is empty...\n");
        else
        {
            printf("\nQueue  :   ");
            while(ptr!=NULL)
            {
                printf(" %d --> ",ptr->info);
                ptr=ptr->next;
            }
            printf("\b\b\b\b   ");
            printf("\n");
        }
    }
    void insfront(nd **ptr)
    {
        if(*ptr==NULL)
        {
            *ptr=new1;
            printf("\nEnter the element : ");
            scanf("%d",&(*ptr)->info);
            (*ptr)->next=NULL;
        }
        else
        {
            nd *t;
            t=new1;
            printf("\nEnter the element : ");
            scanf("%d",&t->info);
            t->next=*ptr;
            *ptr=t;
        }
    }
    void insrear(nd **ptr)
    {
        nd *c=*ptr;
        if(*ptr==NULL)
        {
            *ptr=new1;
            printf("\nEnter the element : ");
            scanf("%d",&(*ptr)->info);
            (*ptr)->next=NULL;
        }
        else
        {
            nd *t;
            t=new1;
            printf("\nEnter the element : ");
            scanf("%d",&t->info);
            while(c->next!=NULL)
                c=c->next;
            t->next=NULL;
            c->next=t;
        }
    }
    void delfront(nd **ptr)
    {
        nd *c=*ptr,*t=*ptr;
        if(*ptr==NULL)
            printf("\nQueue is empty...");
        else if(t->next==NULL)        // If queue contains single node
        {
            *ptr=NULL;
            free(t);
        }
        else
        {
            *ptr=c->next;
            free(c);
        }
    }
    void delend(nd **ptr)
    {
        nd *c=*ptr,*t=*ptr,*p;
        if(*ptr==NULL)
            printf("\nQueue is empty...");
        else if(t->next==NULL)         // If queue contains single node
        {
            *ptr=NULL;
            free(t);
        }
        else
        {
            while(c->next!=NULL)
            {
                p=c;
                c=c->next;
            }
            p->next=NULL;
            free(c);
        }
    }   
main()
{
    int n;
    nd *h;
    h=NULL;
    printf("\nProgram to implement dequeue using linked list :\n");
    int ch1,ch2,ch3,ch4,ch5,ch6,ch7;
    do
    {
    printf("\n[1] Create input restricted queue \n[2] Create output restricted queue ");
    printf("\n[3] Quit from program \n");
    printf("\nEnter your choice : ");
    scanf("%d",&ch1);
    switch(ch1)
    {
        case 1:
            do
            {
            printf("\n[1] Insert at front restricted \n[2] Insert at end restricted ");
            printf("\n[3] Quit to previous menu \n");
            printf("\nEnter your choice : ");
            scanf("%d",&ch2);
            switch(ch2)
            {
                case 1:
                    do
                    {
                    printf("\n[1] Insert at end      [2] Delete from front ");
                    printf("\n[3] Delete from end    [4] Quit to previous menu \n");
                    printf("\nEnter your choice : ");
                    scanf("%d",&ch3);
                    switch(ch3)
                    {
                        case 1:
                            insrear(&h);
                            display(h);
                            break;
                        case 2:
                            delfront(&h);
                            display(h);
                            break;
                        case 3:
                            delend(&h);
                            display(h);
                            break;
                        case 4:
                            break;
                        default:printf("\nEnter correct choice..\n");
                            break;
                           
                    }
                    }while(ch3!=4);
                    break;
                case 2:   
                    do
                    {
                    printf("\n[1] Insert at front    [2] Delete from front ");
                    printf("\n[3] Delete from end    [4] Quit to previous menu \n");
                    printf("\nEnter your choice : ");
                    scanf("%d",&ch4);
                    switch(ch4)
                    {
                        case 1:
                            insfront(&h);
                            display(h);
                            break;
                        case 2:
                            delfront(&h);
                            display(h);
                            break;
                        case 3:
                            delend(&h);
                            display(h);
                        case 4:
                            break;
                        default:printf("\nEnter correct choice...\n");
                            break;
                    }
                    }while(ch4!=4);
                    break;
                case 3:
                    break;
                default:printf("\nEnter correct choice...\n");
                    break;
            }
            }while(ch2!=3);
            break;
        case 2:
            do
            {
            printf("\n[1] Delete at front restricted  [2] Delete at end restricted ");
            printf("\n[3] Quit to previous menu \n");   
            printf("\nEnter your choice : ");
            scanf("%d",&ch5);
            switch(ch5)
            {
                case 1:   
                    do
                    {
                    printf("\n[1] Insert at front    [2] Insert at end ");
                    printf("\n[3] Delete from end    [4] Quit to previous menu \n");
                    printf("\nEnter your choice : ");
                    scanf("%d",&ch6);
                    switch(ch6)
                    {
                        case 1:
                            insfront(&h);
                            display(h);
                            break;
                        case 2:
                            insrear(&h);
                            display(h);
                            break;
                        case 3:
                            delend(&h);
                            display(h);
                            break;
                        case 4:
                            break;
                        default:printf("\nEnter correct choice...\n");
                            break;
                    }
                    }while(ch6!=4);
                    break;
                case 2:
                    do
                    {
                    printf("\n[1] Insert at front      [2] Insert at end ");
                    printf("\n[3] Delete from front      [4] Quit to previous menu \n");
                    printf("\nEnter your choice : ");
                    scanf("%d",&ch7);
                    switch(ch7)
                    {
                        case 1:
                            insfront(&h);
                            display(h);
                            break;
                        case 2:
                            insrear(&h);
                            display(h);
                            break;
                        case 3:
                            delfront(&h);
                            display(h);
                            break;
                        case 4:
                            break;
                        default:printf("\nEnter correct choice...\n");
                            break;
                    }
                    }while(ch7!=4);
                    break;
                case 3:
                    break;
                default:printf("\nEnter correct choice...\n");
                    break;
            }
            }while(ch5!=3);
        case 3:
            break;
        default:printf("\nEnter correct choice ... \n");
            break;
    }
    }while(ch1!=3);
}  


Circular Queue using linked list

   /* Program to implement circular queue using linked list */

    #include
    #include
    #define new1 (nd *)malloc(sizeof(nd))
    typedef struct queue
    {
        int info;
        struct queue *next;
    }nd;   
    void display(nd **ptr,nd **rear)
    {
        nd *t=*ptr;   
        if(*ptr==NULL)
            printf("\nQueue is empty...\n");
        else
        {   
            printf("\nQueue  :    ");
            while(t!=*rear)
            {
                printf(" %d --> ",t->info);
                t=t->next;
            }
            printf("\b\b\b\b   ");
        }
        printf("\n");
    }
    void insert(nd **ptr,nd **rear)
    {
        nd *t=*ptr;
        (*rear)->next=*ptr;
        if(*ptr==NULL)
        {
            *ptr=new1;
            printf("\nEnter 1st element : ");
            scanf("%d",&(*ptr)->info);
            (*ptr)->next=*rear;
        }
        else
        {
            nd *t1=new1;
            printf("\nEnter element  : ");
            scanf("%d",&t1->info);
            while(t->next!=*rear)
                t=t->next;
            t1->next=*rear;
            t->next=t1;
        }
    }
    void delete(nd **ptr,nd **rear)
    {
        nd *c=*ptr,*t=*ptr;
        if(*ptr==NULL)
            printf("\nQueue is empty...\n");
        else if(t->next==*rear)        // If head contains the address of "rear" pointer
        {
            *ptr=NULL;
            free(t);
        }
        else
        {
            *ptr=c->next;
            free(c);
        }
    }
    main()
    {
        nd *h=NULL;
        nd *rear=new1;
        printf("\nProgram to implement circular queue using linked list : \n");
        int ch;
        do
        {
            printf("\n[1] Insert  [2] Delete [3] Display [4] Exit : \n");
            printf("\nEnter your choice : ");
            scanf("%d",&ch);
            switch(ch)
            {
                case 1:
                    insert(&h,&rear);
                    display(&h,&rear);
                    break;
                case 2:
                    delete(&h,&rear);
                    display(&h,&rear);
                    break;
                case 3:
                    display(&h,&rear);
                    break;
                case 4:
                    break;
                default : printf("\nEnter correct choice : \n");
                      break;
            }
        }while(ch!=4);
    }

Circular queue using array

 
 /* Program to implement circular queue using array */

 #include<stdio.h>
 void insert(int a[],int n,int val,int *front,int *rear)
 {
  if(*front==0 && *rear==n-1)
   printf("\nQueue overflow... \n");
  else if(*rear == *front - 1)
   printf("\nQueue Overflow...\n");
  else if(*front==-1 && *rear==-1)
  {
   *front=0;
   a[++(*rear)]=val;
  }
  else if(*rear==n-1)
  {
   *rear=0;
   a[*rear]=val;
  }
  else
   a[++(*rear)]=val;
 }
 void del(int a[],int n,int dele,int *front,int *rear)
 {
  if(*front==-1)
  {
   printf("\nQueue underflow ... \n");
   return;
  }
  else if(*front == *rear)
  {
   *front=-1;
   *rear=-1;
  }
  else if(*front==n-1) *front=0;
  else (*front)++;
 }
 void display(int a[],int n,int *front,int *rear)
 {
  int i;
  if(*front<0)
  {
   printf("\nQueue underflow ... \n");
   return;
  }
  else if(*rear >= *front)
  {
   printf("\nQueue :  ");
   for(i=*front;i<=*rear;i++)
    printf("  %d  ",a[i]);
  }
  else 
  {
   printf("\nQueue : ");
   for(i=*front;i<n;i++)
    printf("  %d  ",a[i]);
   for(i=0;i<=*rear;i++)
    printf("  %d  ",a[i]);
  }
  
 }
 main()
 {
  printf("\nProgram to implement circular queue using array : \n");
  int n,val,dele,front=-1,rear=-1,ch;
  printf("\nEnter array capacity : ");
  scanf("%d",&n);
  int a[n];
  do
  {
   printf("\n[1] Insert [2] Delete [3] Display  [4] Quit \n");
   printf("\nEnter your choice : ");
   scanf("%d",&ch);
   switch(ch)
   {
    case 1:
     printf("\nEnter value to insert : ");
     scanf("%d",&val);
     insert(a,n,val,&front,&rear);
     display(a,n,&front,&rear);
     break;

    case 2:
     del(a,n,dele,&front,&rear);
     display(a,n,&front,&rear);
     break;

    case 3 :
     display(a,n,&front,&rear);
     break;
    case 4: break;

    default : printf("\nEnter correct choice....\n");
      break;
   }
  }while(ch!=4);
 }  

Top