import java.util.*;
public class CQueue {
    private int q[], cap, f, r;
    public CQueue(int cap)
    {
        this.cap=cap;
        q=new int[cap];
        f=r=-1;
    }
    public boolean isEmpty()
    {
        if(r==-1)
            return true;
        else return false;
    }
public void insert(int ele)
{
    if(f==0&&r==cap-1||f==r+1)
    {
        System.out.println("Queue Overflow");
        return;

    }
    r++;
    if(r==cap)
        r=0;
    q[r]=ele;
    if(f==-1)
        f++;
}
public int delete() throws Exception
{
    if(isEmpty())
        throw new Exception("Queue Underflow");
    int z=q[f];
    f++;
    if(f==r+1)
        f=r=-1;
    if(f==cap)
        f=0;
    return z;

}
public void display()
{
    if(isEmpty())
    {
        System.out.println("Queue Empty");
        return;
    }
    int i=f;
    while(true)
    {
        System.out.print(q[i]+" ");
        i++;
        if(i==r+1)
            return;
        if(i==cap)
            i=0;
    }
}
}
class CQueueExp
{
    public static void main(String args[])
    {
       Scanner src=new Scanner(System.in);
       System.out.println("\nEnter the capacity of the Circular Queue");
       int cap=src.nextInt();
       CQueue obj=new CQueue(cap);
       while(true)
       {
           int ele;
           System.out.println("\nEnter choice : 1.Insert 2.Delete 3.Display 4.Exit");
           int ch=src.nextInt();
           if(ch==4)
               break;
           switch(ch)
           {
               case 1: System.out.println("\nEnter element to insert");
               ele=src.nextInt();
               obj.insert(ele);
               obj.display();
               break;

               case 2:try
               {
                   System.out.println("\nPosition of Element you want to delete?");
               ele=src.nextInt();
               int a=obj.delete();
               System.out.println("The deleted elements is : "+a);
               }
               catch(Exception e)
               {
                   System.out.println(e);
               }
               break;

               case 3:obj.display();
               break;

               default: System.out.println("INVALID CHOICE");
       }




}
    }
}

OUTPUT:

Enter the capacity of the Circular Queue
5

Enter choice : 1.Insert 2.Delete 3.Display 4.Exit
1

Enter element to insert
34
34 
Enter choice : 1.Insert 2.Delete 3.Display 4.Exit
1

Enter element to insert
56
34 56 
Enter choice : 1.Insert 2.Delete 3.Display 4.Exit
1

Enter element to insert
78
34 56 78 
Enter choice : 1.Insert 2.Delete 3.Display 4.Exit
1

Enter element to insert
61
34 56 78 61 
Enter choice : 1.Insert 2.Delete 3.Display 4.Exit
2
The deleted elements is : 34
56 78 61 
Enter choice : 1.Insert 2.Delete 3.Display 4.Exit
2
The deleted elements is : 56
78 61 
Enter choice : 1.Insert 2.Delete 3.Display 4.Exit
3
78 61 
Enter choice : 1.Insert 2.Delete 3.Display 4.Exit
4

