Design, Develop and Implement a menu driven Program in C for the operations on Circular QUEUE of Characters

Array Implementation of Circular  Queue with maximum size MAX. The operations are

a. Insert an Element on to Circular QUEUE
b. Delete an Element from Circular QUEUE
c. Demonstrate Overflow and Underflow situations on Circular QUEUE
d. Display the status of Circular QUEUE
e. Exit

ALGORITHM:

Step 1: Start.

Step 2: Initialize queue size to MAX.

Step 3: Insert the elements into circular queue. If queue is full give a message as ‘queue is overflow”

Step 4: Delete an element from the circular queue. If queue is empty give a message as ‘queue is underflow’.

Step 5: Display the contents of the queue.

Step 6: Stop.

ABOUT THE PROBLEM: Circular queue is a linear data structure. It follows FIFO principle. In circular queue the last node is connected back to the first node to make a circle. Circular linked list fallow the First In First Out principle. Elements are added at the rear end and the elements are deleted at front end of the queue. The queue is considered as a circular queue when the positions 0 and MAX-1 are adjacent. Any position before front is also after rear.

				
					#include<stdio.h> 
#include<conio.h> 
#define MAX 4 int ch, front = 0, rear = -1, count=0;
char q[MAX], item; 
void insert() 
{ 
if(count == MAX) 
printf("\nQueue is Full"); 
else 
{ 
rear = (rear + 1) % MAX; 
q[rear]=item; 
count++; 
} 
} 
void del() 
{ 
if(count == 0) 
printf("\nQueue is Empty");
else 
{ 
if(front > rear && rear==MAX-1) 
{ 
front=0; 
rear=-1; 
count=0; 
} 
else 
{ 
item=q[front]; 
printf("\nDeleted item is: %c",item); 
front = (front + 1) % MAX; 
count--; 
} 
} 
} 
void display() 
{ 
int i, f=front, r=rear; 
if(count == 0) printf("\nQueue is Empty"); 
else 
{ 
printf("\nContents of Queue is:\n"); 
for(i=f; i<=r; i++) 
{ 
printf("%c\t", q[i]); 
f = (f + 1) % MAX; 
} 
} 
} 
void main() 
{ 
clrscr(); 
do 
{ 
printf("\n1. Insert\n2. Delete\n3. Display\n4. Exit"); 
printf("\nEnter the choice: "); 
scanf("%d", &ch); 
flushall(); 
switch(ch) 
{ 
case 1: printf("\nEnter the character / item to be inserted: ");
scanf("%c", &item); 
insert();
break; 
case 2: del(); 
break;
case 3: display(); 
break; 
case 4: exit(0); 
break; 
} 
}
while(ch!=4);
getch(); 
}
				
			
OUTPUT:
1. Insert 2. Delete 3. Display 4. Exit
Enter the choice: 1
Enter the character / item to be inserted: A
1. Insert 2. Delete 3. Display 4. Exit
Enter the choice: 1
Enter the character / item to be inserted: B
1. Insert 2. Delete 3. Display 4. Exit
Enter the choice: 1
Enter the character / item to be inserted: C
1. Insert 2. Delete 3. Display 4. Exit
Enter the choice: 1
Enter the character / item to be inserted: D
1. Insert 2. Delete 3. Display 4. Exit
Enter the choice: 3
Contents of Queue is:
A B C D
1. Insert 2. Delete 3. Display 4. Exit
Enter the choice: 1
Enter the character / item to be inserted: F
Queue is Full
1. Insert 2. Delete 3. Display 4. Exit
Enter the choice: 2
Deleted item is: A
1. Insert 2. Delete 3. Display 4. Exit
Enter the choice: 2
Deleted item is: B
1. Insert 2. Delete 3. Display 4. Exit
Enter the choice: 3
Contents of Queue is:
C D
1. Insert 2. Delete 3. Display 4. Exit
Enter the choice: 1
Enter the character / item to be inserted: K
1. Insert 2. Delete
Enter the choice: 3
Contents of Queue is:
C D K
1. Insert 2. Delete
Enter the choice: 4