4. queue #include #include #define SIZE 5 // you can change the queue size int queue[SIZE]; int front = -1, rear = -1; // Function to check if queue is full int isFull() { return (front == (rear + 1) % SIZE); } // Function to check if queue is empty int isEmpty() { return (front == -1); } // Insert element (enqueue) void enqueue(int value) { if (isFull()) { printf("\nQueue is Full! Cannot insert %d.\n", value); } else { if (front == -1) // first insertion front = 0; rear = (rear + 1) % SIZE; queue[rear] = value; printf("%d inserted into queue.\n", value); } } // Delete element (dequeue) void dequeue() { if (isEmpty()) { printf("\nQueue is Empty! Cannot delete.\n"); } else { int value = queue[front]; if (front == rear) { // only one element left front = rear = -1; } else { front = (front + 1) % SIZE; } printf("%d deleted from queue.\n", value); } } // Display queue elements void display() { if (isEmpty()) { printf("\nQueue is Empty!\n"); } else { printf("\nQueue elements are: "); int i = front; while (1) { printf("%d ", queue[i]); if (i == rear) break; i = (i + 1) % SIZE; } printf("\n"); } } int main() { int choice, value; while (1) { printf("\n--- Circular Queue Operations ---\n"); printf("1. Enqueue (Insert)\n"); printf("2. Dequeue (Delete)\n"); printf("3. Display\n"); printf("4. Exit\n"); printf("Enter your choice: "); scanf("%d", &choice); switch (choice) { case 1: printf("Enter value to insert: "); scanf("%d", &value); enqueue(value); break; case 2: dequeue(); break; case 3: display(); break; case 4: exit(0); default: printf("Invalid choice! Try again.\n"); } } return 0; }