101 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #define MAX 5
 | |
| 
 | |
| int queue[MAX];
 | |
| int front = -1;
 | |
| int rear = -1;
 | |
| 
 | |
| // Different from normal queue: Need to check if (rear+1)%MAX == front for full condition
 | |
| int isFull() {
 | |
|     if((rear + 1) % MAX == front)
 | |
|         return 1;
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| // Different from normal queue: Both front and rear can wrap around to 0
 | |
| int isEmpty() {
 | |
|     if(front == -1)
 | |
|         return 1;
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| void enqueue() {
 | |
|     int item;
 | |
|     if(isFull()) {
 | |
|         printf("\nQueue is Full!!");
 | |
|     }
 | |
|     else {
 | |
|         printf("\nEnter element to insert: ");
 | |
|         scanf("%d", &item);
 | |
|         // Different from normal queue: rear wraps around using modulo
 | |
|         if(front == -1) {
 | |
|             front = rear = 0;
 | |
|         }
 | |
|         else {
 | |
|             rear = (rear + 1) % MAX;
 | |
|         }
 | |
|         queue[rear] = item;
 | |
|         printf("\nElement inserted successfully!");
 | |
|     }
 | |
| }
 | |
| 
 | |
| void dequeue() {
 | |
|     if(isEmpty()) {
 | |
|         printf("\nQueue is Empty!!");
 | |
|     }
 | |
|     else {
 | |
|         printf("\nDeleted element is: %d", queue[front]);
 | |
|         // Different from normal queue: front wraps around using modulo
 | |
|         if(front == rear) {
 | |
|             front = rear = -1;
 | |
|         }
 | |
|         else {
 | |
|             front = (front + 1) % MAX;
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| void display() {
 | |
|     int i;
 | |
|     if(isEmpty()) {
 | |
|         printf("\nQueue is Empty!!");
 | |
|     }
 | |
|     else {
 | |
|         printf("\nQueue elements are: ");
 | |
|         // Different from normal queue: Need to use modulo to wrap around while displaying
 | |
|         for(i = front; i != rear; i = (i + 1) % MAX) {
 | |
|             printf("%d ", queue[i]);
 | |
|         }
 | |
|         printf("%d", queue[i]);
 | |
|     }
 | |
| }
 | |
| 
 | |
| int main() {
 | |
|     int choice;
 | |
|     while(1) {
 | |
|         printf("\n\n1. Insert");
 | |
|         printf("\n2. Delete");
 | |
|         printf("\n3. Display");
 | |
|         printf("\n4. Exit");
 | |
|         printf("\nEnter your choice: ");
 | |
|         scanf("%d", &choice);
 | |
| 
 | |
|         switch(choice) {
 | |
|             case 1:
 | |
|                 enqueue();
 | |
|                 break;
 | |
|             case 2:
 | |
|                 dequeue();
 | |
|                 break;
 | |
|             case 3:
 | |
|                 display();
 | |
|                 break;
 | |
|             case 4:
 | |
|                 exit(0);
 | |
|             default:
 | |
|                 printf("\nInvalid choice!!");
 | |
|         }
 | |
|     }
 | |
|     return 0;
 | |
| }
 | 
