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 printed state of the queue after the following operations?
Enqueue 10, Enqueue 20, Dequeue, Enqueue 30
Enqueue 10, Enqueue 20, Dequeue, Enqueue 30
DSA C++
struct Node {
int data;
Node* next;
Node(int val) : data(val), next(nullptr) {}
};
class Queue {
Node* front;
Node* rear;
public:
Queue() : front(nullptr), rear(nullptr) {}
void enqueue(int val) {
Node* newNode = new Node(val);
if (!rear) {
front = rear = newNode;
return;
}
rear->next = newNode;
rear = newNode;
}
void dequeue() {
if (!front) return;
Node* temp = front;
front = front->next;
if (!front) rear = nullptr;
delete temp;
}
void print() {
Node* temp = front;
while (temp) {
std::cout << temp->data << " -> ";
temp = temp->next;
}
std::cout << "null" << std::endl;
}
};
int main() {
Queue q;
q.enqueue(10);
q.enqueue(20);
q.dequeue();
q.enqueue(30);
q.print();
return 0;
}Attempts:
2 left
💡 Hint
Remember that dequeue removes the front element.
✗ Incorrect
After enqueueing 10 and 20, the queue is 10 -> 20 -> null. Dequeue removes 10, so queue becomes 20 -> null. Enqueue 30 adds it to the rear, resulting in 20 -> 30 -> null.
🧠 Conceptual
intermediateQueue Empty State Check
Which condition correctly checks if the queue implemented using linked list is empty?
Attempts:
2 left
💡 Hint
Empty queue means no front node.
✗ Incorrect
In a linked list queue, when front is nullptr, it means no elements are present. Rear can be nullptr or not, but front is the main indicator.
🔧 Debug
advancedIdentify the Bug in Dequeue Method
What error will occur when running this dequeue method if the queue has only one element?
DSA C++
void dequeue() {
if (!front) return;
Node* temp = front;
front = front->next;
delete temp;
}Attempts:
2 left
💡 Hint
Consider what happens to rear when the last element is dequeued.
✗ Incorrect
When the last element is dequeued, front becomes nullptr but rear still points to the deleted node, causing dangling pointer issues.
❓ Predict Output
advancedOutput After Multiple Enqueue and Dequeue
What is the queue state after these operations?
Enqueue 5, Enqueue 15, Enqueue 25, Dequeue, Dequeue, Enqueue 35
Enqueue 5, Enqueue 15, Enqueue 25, Dequeue, Dequeue, Enqueue 35
DSA C++
struct Node {
int data;
Node* next;
Node(int val) : data(val), next(nullptr) {}
};
class Queue {
Node* front;
Node* rear;
public:
Queue() : front(nullptr), rear(nullptr) {}
void enqueue(int val) {
Node* newNode = new Node(val);
if (!rear) {
front = rear = newNode;
return;
}
rear->next = newNode;
rear = newNode;
}
void dequeue() {
if (!front) return;
Node* temp = front;
front = front->next;
if (!front) rear = nullptr;
delete temp;
}
void print() {
Node* temp = front;
while (temp) {
std::cout << temp->data << " -> ";
temp = temp->next;
}
std::cout << "null" << std::endl;
}
};
int main() {
Queue q;
q.enqueue(5);
q.enqueue(15);
q.enqueue(25);
q.dequeue();
q.dequeue();
q.enqueue(35);
q.print();
return 0;
}Attempts:
2 left
💡 Hint
Dequeue removes from front, track carefully.
✗ Incorrect
After enqueueing 5,15,25 queue is 5->15->25->null. Dequeue removes 5, then 15, queue is 25->null. Enqueue 35 adds to rear, queue is 25->35->null. But careful: after second dequeue, front is 25. Then enqueue 35 adds after 25. So queue is 25->35->null. The correct answer is option C.
🧠 Conceptual
expertTime Complexity of Queue Operations Using Linked List
What is the time complexity of enqueue and dequeue operations in a queue implemented using a linked list with front and rear pointers?
Attempts:
2 left
💡 Hint
Think about how front and rear pointers help.
✗ Incorrect
With front and rear pointers, enqueue adds at rear in O(1), dequeue removes from front in O(1). No traversal needed.
