1. set global variables max and top = -1 2. Display the menu of stack operations to the user b. Read the user's selection and perform the corresponding operation: enqueueFront enqueueRear dequeueFront dequeueRear display exit 3. in enqueueFront function if ((front == 0 && rear == max - 1) or (front == rear + 1)) print "Queue overflow" else if (front == -1 && rear == -1) set front and rear = 0 else if fron == 0 set front = max - 1 else front-- queue[front] = value; 4. in enqueueRear function if ((front == 0 && rear == max - 1) || (front == rear + 1)) print "Queue underflow" else if (front == -1 && rear == -1) set front and rear = 0 else if (rear == max - 1) set rear = 0 else rear++ queue[rear] = value; 5. in dequeueFront function if (front == -1 && rear == -1) print "Queue Empty" print queue[front] has been deleted from queue if (front == rear) set front and rear = -1 else if (front == max - 1) front = 0 else front++ 6. in dequeueRear function if (front == -1 && rear == -1) print Queue Empty print queue[front] has been deleted from queue if (front == rear) set front and rear = -1 else if (rear == 0) rear = max - 1; else rear-- 7. in display function if (front == -1 && rear == -1) print Queue is Empty return if (front <= rear) for (i = front to i <= rear) print queue[i] else for (i = front to i < max) print queue[i] for (i = 0 to i <= rear) print queue[i] -------------------------------------------------------------------------------------------------- #include int front = -1, rear = -1, max; void enqueueFront(int queue[], int value); void enqueueRear(int queue[], int value); void dequeueFront(int queue[]); void dequeueRear(int queue[]); void display(int queue[]); int main() { int selection, value; printf("Enter the size of Queue: "); scanf("%d", &max); int queue[max]; printf("Choose operation to perform on Queue\n"); while (1) { printf("\n1. Enqueue at Front\n2. Enqueue at Rear\n3. Dequeue at Front\n4. Dequeue at Rear\n5. Display\n6. Exit\n"); scanf("%d", &selection); switch (selection) { case 1: printf("Enter element to be added to queue: "); scanf("%d", &value); enqueueFront(queue, value); break; case 2: printf("Enter element to be added to queue: "); scanf("%d", &value); enqueueRear(queue, value); break; case 3: dequeueFront(queue); break; case 4: dequeueRear(queue); break; case 5: display(queue); break; case 6: return 0; default: printf("\nInvalid Selection\n"); } } } void enqueueFront(int queue[], int value) { if ((front == 0 && rear == max - 1) || (front == rear + 1)) { printf("Queue Overflow\n"); } else if (front == -1 && rear == -1) { front = 0; rear = 0; } else if (front == 0) { front = max - 1; } else { front = front - 1; } queue[front] = value; } void enqueueRear(int queue[], int value) { if ((front == 0 && rear == max - 1) || (front == rear + 1)) { printf("Queue Overflow\n"); } else if (front == -1 && rear == -1) { front = 0; rear = 0; } else if (rear == max - 1) { rear = 0; } else { rear++; } queue[rear] = value; } void dequeueFront(int queue[]) { if (front == -1 && rear == -1) { printf("Queue Empty\n"); } printf("\n%d has been deleted from queue\n", queue[front]); if (front == rear) { front = -1; rear = -1; } else if (front == max - 1) { front = 0; } else { front++; } } void dequeueRear(int queue[]) { if (front == -1 && rear == -1) { printf("Queue Empty\n"); } printf("\n%d has been deleted from queue\n", queue[front]); if (front == rear) { front = -1; rear = -1; } else if (rear == 0) { rear = max - 1; } else { rear--; } } void display(int queue[]) { if (front == -1 && rear == -1) { printf("Queue is Empty\n"); return; } printf("Queue Elements: "); if (front <= rear) { for (int i = front; i <= rear; i++) printf("%d ", queue[i]); } else { for (int i = front; i < max; i++) printf("%d ", queue[i]); for (int i = 0; i <= rear; i++) printf("%d ", queue[i]); } printf("\n"); }