Challenge - 5 Problems
Queue Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediateOutput of Enqueue and Dequeue Operations
What is the output of the queue after performing these operations?
Start with an empty queue of size 5.
Enqueue 10, 20, 30.
Dequeue one element.
Enqueue 40.
Show the queue elements from front to rear.
Start with an empty queue of size 5.
Enqueue 10, 20, 30.
Dequeue one element.
Enqueue 40.
Show the queue elements from front to rear.
DSA C++
#include <iostream> class Queue { int arr[5]; int front, rear; public: Queue() { front = -1; rear = -1; } bool isEmpty() { return front == -1; } bool isFull() { return rear == 4; } void enqueue(int x) { if (isFull()) return; if (isEmpty()) front = 0; arr[++rear] = x; } void dequeue() { if (isEmpty()) return; if (front == rear) front = rear = -1; else front++; } void printQueue() { if (isEmpty()) { std::cout << "Queue is empty"; return; } for (int i = front; i <= rear; i++) { std::cout << arr[i] << " "; } } }; int main() { Queue q; q.enqueue(10); q.enqueue(20); q.enqueue(30); q.dequeue(); q.enqueue(40); q.printQueue(); return 0; }
Attempts:
2 left
💡 Hint
Remember that dequeue removes the front element and front moves forward.
✗ Incorrect
Initially queue has 10, 20, 30. Dequeue removes 10. Then enqueue 40 adds at rear. So queue is 20, 30, 40.
❓ Predict Output
intermediateQueue Full Condition Check
Given a queue of size 3 implemented using array, what will be the output after these operations?
Enqueue 5, 10, 15.
Attempt to enqueue 20.
Print queue elements.
Enqueue 5, 10, 15.
Attempt to enqueue 20.
Print queue elements.
DSA C++
#include <iostream> class Queue { int arr[3]; int front, rear; public: Queue() { front = -1; rear = -1; } bool isEmpty() { return front == -1; } bool isFull() { return rear == 2; } void enqueue(int x) { if (isFull()) { std::cout << "Queue is full" << std::endl; return; } if (isEmpty()) front = 0; arr[++rear] = x; } void printQueue() { if (isEmpty()) { std::cout << "Queue is empty" << std::endl; return; } for (int i = front; i <= rear; i++) { std::cout << arr[i] << " "; } } }; int main() { Queue q; q.enqueue(5); q.enqueue(10); q.enqueue(15); q.enqueue(20); q.printQueue(); return 0; }
Attempts:
2 left
💡 Hint
Check the isFull condition before enqueue.
✗ Incorrect
The queue size is 3, so after 3 enqueues it is full. The 4th enqueue prints 'Queue is full' and does not add 20.
🔧 Debug
advancedIdentify the Bug in Dequeue Method
What is the bug in this dequeue method of a queue implemented using array?
void dequeue() {
if (front == -1) return;
if (front == rear) front = rear = -1;
else front--;
}
Choose the correct explanation.
void dequeue() {
if (front == -1) return;
if (front == rear) front = rear = -1;
else front--;
}
Choose the correct explanation.
DSA C++
void dequeue() {
if (front == -1) return;
if (front == rear) front = rear = -1;
else front--;
}Attempts:
2 left
💡 Hint
Think about which direction front moves when removing an element.
✗ Incorrect
Dequeue removes front element, so front index should move forward (increment), not backward (decrement).
🧠 Conceptual
advancedWhy Circular Queue is Better Than Simple Array Queue?
Which of the following is the main advantage of using a circular queue over a simple array-based queue?
Attempts:
2 left
💡 Hint
Think about what happens to space when elements are dequeued in a simple array queue.
✗ Incorrect
Circular queue connects end to start, so after dequeue, freed spaces can be reused without shifting elements.
❓ Predict Output
expertOutput After Multiple Enqueue and Dequeue in Circular Queue
Consider a circular queue of size 4 implemented using array with front and rear initialized to -1.
Perform these operations:
enqueue(1), enqueue(2), enqueue(3), dequeue(), enqueue(4), enqueue(5), dequeue(), enqueue(6).
What is the queue content from front to rear?
Perform these operations:
enqueue(1), enqueue(2), enqueue(3), dequeue(), enqueue(4), enqueue(5), dequeue(), enqueue(6).
What is the queue content from front to rear?
DSA C++
#include <iostream> class CircularQueue { int arr[4]; int front, rear, size; public: CircularQueue() { front = -1; rear = -1; size = 4; } bool isFull() { return (rear + 1) % size == front; } bool isEmpty() { return front == -1; } void enqueue(int x) { if (isFull()) return; if (isEmpty()) front = 0; rear = (rear + 1) % size; arr[rear] = x; } void dequeue() { if (isEmpty()) return; if (front == rear) front = rear = -1; else front = (front + 1) % size; } void printQueue() { if (isEmpty()) { std::cout << "Queue is empty"; return; } int i = front; while (true) { std::cout << arr[i] << " "; if (i == rear) break; i = (i + 1) % size; } } }; int main() { CircularQueue q; q.enqueue(1); q.enqueue(2); q.enqueue(3); q.dequeue(); q.enqueue(4); q.enqueue(5); q.dequeue(); q.enqueue(6); q.printQueue(); return 0; }
Attempts:
2 left
💡 Hint
Track front and rear indices carefully after each operation using modulo arithmetic.
✗ Incorrect
After all operations, queue contains 3,4,5,6 in order from front to rear.
