// C or C++ program for insertion and // deletion in Circular Queue #include using namespace std; struct Queue { // Initialize front and rear int rear, front; // Circular Queue int size; int *arr; Queue(int s) { front = rear = -1; size = s; arr = new int[s]; } void enQueue(int value); int deQueue(); void displayQueue(); }; /* Function to create Circular queue */ void Queue::enQueue(int value) { if ((front == 0 && rear == size-1) || (rear == (front-1)%(size-1))) { printf("Queue is Full\n"); return; } else if (front == -1) /* Insert First Element */ { front = rear = 0; arr[rear] = value; } else if (rear == size-1 && front != 0) { rear = 0; arr[rear] = value; } else { rear++; arr[rear] = value; } } // Function to delete element from Circular Queue int Queue::deQueue() { if (front == -1) { printf("Queue is Empty\n"); return INT_MIN; } int data = arr[front]; arr[front] = -1; if (front == rear) { front = -1; rear = -1; } else if (front == size-1) front = 0; else front++; return data; } // Function displaying the elements // of Circular Queue void Queue::displayQueue() { if (front == -1) { printf("Queue is Empty\n"); return; } printf("Elements in Circular Queue are: "); if (rear >= front) { for (int i = front; i <= rear; i++) printf("%d ",arr[i]); } else { for (int i = front; i < size; i++) printf("%d ", arr[i]); for (int i = 0; i <= rear; i++) printf("%d ", arr[i]); } printf("\n"); } /* Driver of the program */ int main() { Queue q(5); // Inserting elements in Circular Queue fprintf(stdout, "inserting %d\n", 1); q.enQueue(1); q.displayQueue(); fprintf(stdout, "inserting %d\n", 2); q.enQueue(2); q.displayQueue(); fprintf(stdout, "inserting %d\n", 3); q.enQueue(3); q.displayQueue(); fprintf(stdout, "inserting %d\n", 4); q.enQueue(4); q.displayQueue(); fprintf(stdout, "inserting %d\n", 5); q.enQueue(5); q.displayQueue(); fprintf(stdout, "inserting %d\n", 6); q.enQueue(6); q.displayQueue(); /* // Display elements present in Circular Queue // Deleting elements from Circular Queue printf("\nDeleted value = %d", q.deQueue()); printf("\nDeleted value = %d", q.deQueue()); q.displayQueue(); q.enQueue(9); q.enQueue(20); q.enQueue(5); q.displayQueue(); q.enQueue(20); */ return 0; }