Challenge - 5 Problems
Linked List Queue Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediateOutput of enqueue operations on a linked list queue
What is the printed state of the queue after performing the enqueue operations in the given code?
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 printQueue() {
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.enqueue(30);
q.printQueue();
return 0;
}Attempts:
2 left
💡 Hint
Remember that enqueue adds elements at the rear of the queue.
✗ Incorrect
Enqueue adds elements at the rear. So the order is the same as insertion: 10, then 20, then 30.
❓ Predict Output
intermediateResult after enqueueing and printing an empty queue
What will be the output if we enqueue a single element 5 and then print the queue?
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 printQueue() {
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.printQueue();
return 0;
}Attempts:
2 left
💡 Hint
Check how the printQueue function formats the output.
✗ Incorrect
The queue has one element 5, so it prints '5 -> null'.
❓ Predict Output
advancedOutput after multiple enqueue operations with a bug in enqueue
Consider the following enqueue function with a bug. What will be the output after enqueueing 1, 2, 3 and printing the queue?
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 = newNode; // Bug: missing rear->next assignment
}
void printQueue() {
Node* temp = front;
while (temp) {
std::cout << temp->data << " -> ";
temp = temp->next;
}
std::cout << "null" << std::endl;
}
};
int main() {
Queue q;
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
q.printQueue();
return 0;
}Attempts:
2 left
💡 Hint
Check if the next pointer of the rear node is updated correctly.
✗ Incorrect
Because rear->next is not updated, the list breaks after the first node. So only '1 -> null' prints.
❓ Predict Output
advancedState of queue after enqueueing and dequeuing
Given the following code that enqueues 4, 5, 6 and then dequeues one element, what is the printed queue?
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 printQueue() {
Node* temp = front;
while (temp) {
std::cout << temp->data << " -> ";
temp = temp->next;
}
std::cout << "null" << std::endl;
}
};
int main() {
Queue q;
q.enqueue(4);
q.enqueue(5);
q.enqueue(6);
q.dequeue();
q.printQueue();
return 0;
}Attempts:
2 left
💡 Hint
Dequeue removes the front element.
✗ Incorrect
After dequeue, the front element 4 is removed, so queue starts at 5.
🧠 Conceptual
expertWhy is rear pointer important in enqueue operation of linked list queue?
Which of the following best explains why maintaining a rear pointer is important when enqueueing in a linked list based queue?
Attempts:
2 left
💡 Hint
Think about how to add elements quickly at the end of a linked list.
✗ Incorrect
The rear pointer lets us add new nodes at the end quickly without walking through the whole list, making enqueue O(1).
