#include
<stdio.h>
#include<stdlib.h>
#define
MAX 3
char
cq[MAX];
int front = -1,rear = -1;
void
add(char);
void
del();
void
display();
int
main()
{
            int
ch;
            char
item;
            while(1)
            {
                        printf("\n\n~~Main
Menu~~");
                        printf("\n==> 1.
Insertion and Overflow Demo");
                        printf("\n==>
2. Deletion and Underflow Demo");
                        printf("\n==>
3. Display");
                        printf("\n==>
4. Exit");
                        printf("\nEnter
Your Choice: ");
                        scanf("%d",
&ch);
                        switch(ch)
                        {
                                    case
1: printf("\n\nEnter the element to be inserted: ");
                                                scanf("%d", &item);
                                                add(item);
                                                break;
                                    case 2: del();
                                                break;
                                   case 3: display();
                                                break;
                                    case
4: exit(0);
                                    default:
printf("\n\nPlease enter a valid choice");
                        }
            }
}
void
add(char item)
{
            if(front == (rear+1)%MAX)
                        printf("\n\n~~Circular
Queue Overflow~~");
            else
            {
                        if(front
== -1)
                                    front
= rear = 0;
                        else
                                    rear
= (rear+1)%MAX;
                        cq[rear]
= item;
            }
}
void
del()
{
            char
item;
            if(front
== -1)
            {
                        printf("\n\n~~Circular
Queue Underflow~~");
            }
            else
            {
                        item
= cq[front];
                        if(front
== rear) //only one element
                                    front
= rear = -1;
                        else
                                    front
= (front+1)%MAX;
                        printf("\n\nDeleted
element from the queue is: %d ", item );
            }
}
void
display ()
{
            int
i ;
            if(front
== -1)
            {
                        printf("\n\nCircular
Queue Empty");
                        return;
            }
            else
            {
                        printf("\nCircular
Queue contents are:\n");
                        printf("\nFront[%d]->
", front);
                        for(i=front;
i!=rear ; i=(i+1)%MAX)
                        {
                                    printf(" 
%d", cq[i]);
                        }
                        printf("  %d",cq[i]);
                        printf("
<-[%d]Rear", rear);
    }
}
Output:
~~Main
Menu~~
==>
1. Insertion and Overflow Demo
==>
2. Deletion and Underflow Demo
==>
3. Display
==>
4. Exit
Enter
Your Choice: 1
Enter the element to be inserted:
11
~~Main
Menu~~
==>
1. Insertion and Overflow Demo
==>
2. Deletion and Underflow Demo
==>
3. Display
==>
4. Exit
Enter
Your Choice: 1
Enter the element to be inserted:
22
~~Main
Menu~~
==>
1. Insertion and Overflow Demo
==>
2. Deletion and Underflow Demo
==>
3. Display
==>
4. Exit
Enter
Your Choice: 1
Enter the element to be inserted:
33
~~Main
Menu~~
==>
1. Insertion and Overflow Demo
==>
2. Deletion and Underflow Demo
==>
3. Display
==>
4. Exit
Enter
Your Choice: 1
Enter the element to be inserted:
44
~~Circular Queue Overflow~~
~~Main
Menu~~
==>
1. Insertion and Overflow Demo
==>
2. Deletion and Underflow Demo
==>
3. Display
==>
4. Exit
Enter
Your Choice: 3
Circular Queue contents are:
Front[0]->   11 
22  33 <-[2]Rear
~~Main
Menu~~
==>
1. Insertion and Overflow Demo
==>
2. Deletion and Underflow Demo
==>
3. Display
==>
4. Exit
Enter
Your Choice: 2
Deleted element from the queue is:
11
~~Main
Menu~~
==>
1. Insertion and Overflow Demo
==>
2. Deletion and Underflow Demo
==>
3. Display
==>
4. Exit
Enter
Your Choice: 2
Deleted element from the queue is:
22
~~Main
Menu~~
==>
1. Insertion and Overflow Demo
==>
2. Deletion and Underflow Demo
==>
3. Display
==>
4. Exit
Enter
Your Choice: 3
Circular Queue contents are:
Front[2]->   33 <-[2]Rear
~~Main
Menu~~
==>
1. Insertion and Overflow Demo
==>
2. Deletion and Underflow Demo
==>
3. Display
==>
4. Exit
Enter
Your Choice: 1
Enter the element to be inserted:
66
~~Main
Menu~~
==>
1. Insertion and Overflow Demo
==>
2. Deletion and Underflow Demo
==>
3. Display
==>
4. Exit
Enter
Your Choice: 3
Circular Queue contents are:
Front[2]->  
33  66 <-[0]Rear