Challenge - 5 Problems
Linked List Queue Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediateWhat is the output after enqueue operations?
Consider a linked list based queue initially empty. We enqueue elements 5, 10, and 15 in this order. What is the printed state of the queue after these operations?
DSA Java
class Node { int data; Node next; Node(int data) { this.data = data; this.next = null; } } class Queue { Node front, rear; void enqueue(int value) { Node newNode = new Node(value); if (rear == null) { front = rear = newNode; return; } rear.next = newNode; rear = newNode; } void printQueue() { Node temp = front; while (temp != null) { System.out.print(temp.data + " -> "); temp = temp.next; } System.out.print("null"); } } public class Main { public static void main(String[] args) { Queue q = new Queue(); q.enqueue(5); q.enqueue(10); q.enqueue(15); q.printQueue(); } }
Attempts:
2 left
💡 Hint
Remember, enqueue adds elements at the rear of the queue.
✗ Incorrect
Enqueue adds elements at the rear. So the order is 5, then 10, then 15. The print shows from front to rear.
❓ Predict Output
intermediateWhat happens if we enqueue into an empty queue?
Given the enqueue method below, what will be the state of the queue after enqueueing the value 20 into an empty queue?
DSA Java
class Node { int data; Node next; Node(int data) { this.data = data; this.next = null; } } class Queue { Node front, rear; void enqueue(int value) { Node newNode = new Node(value); if (rear == null) { front = rear = newNode; return; } rear.next = newNode; rear = newNode; } void printQueue() { Node temp = front; while (temp != null) { System.out.print(temp.data + " -> "); temp = temp.next; } System.out.print("null"); } } public class Main { public static void main(String[] args) { Queue q = new Queue(); q.enqueue(20); q.printQueue(); } }
Attempts:
2 left
💡 Hint
Check how front and rear are set when the queue is empty.
✗ Incorrect
When the queue is empty, both front and rear point to the new node with value 20.
🔧 Debug
advancedIdentify the error in enqueue method
What error will occur when running this enqueue method on an empty queue?
DSA Java
void enqueue(int value) { Node newNode = new Node(value); if (front == null) { rear = newNode; return; } rear.next = newNode; rear = newNode; }
Attempts:
2 left
💡 Hint
Check if front is updated when queue is empty.
✗ Incorrect
When queue is empty, front should also point to newNode. Here it is not set, so front remains null.
🧠 Conceptual
advancedWhy is rear pointer needed in linked list queue?
In a linked list implementation of a queue, why do we maintain a rear pointer along with front pointer?
Attempts:
2 left
💡 Hint
Think about where enqueue adds new elements.
✗ Incorrect
Rear pointer lets us add new nodes at the end quickly without traversing the whole list.
❓ Predict Output
expertOutput after mixed enqueue and dequeue operations
Given the following sequence of operations on an initially empty linked list queue, what is the printed queue state?
Operations:
- enqueue(7)
- enqueue(14)
- dequeue()
- enqueue(21)
- enqueue(28)
- dequeue()
- enqueue(35)
Assume dequeue removes from front and printQueue prints from front to rear.
DSA Java
class Node { int data; Node next; Node(int data) { this.data = data; this.next = null; } } class Queue { Node front, rear; void enqueue(int value) { Node newNode = new Node(value); if (rear == null) { front = rear = newNode; return; } rear.next = newNode; rear = newNode; } void dequeue() { if (front == null) return; front = front.next; if (front == null) rear = null; } void printQueue() { Node temp = front; while (temp != null) { System.out.print(temp.data + " -> "); temp = temp.next; } System.out.print("null"); } } public class Main { public static void main(String[] args) { Queue q = new Queue(); q.enqueue(7); q.enqueue(14); q.dequeue(); q.enqueue(21); q.enqueue(28); q.dequeue(); q.enqueue(35); q.printQueue(); } }
Attempts:
2 left
💡 Hint
Track front and rear carefully after each dequeue and enqueue.
✗ Incorrect
After first dequeue, 7 is removed, front is 14. After second dequeue, 14 is removed, front is 21. Enqueues add at rear.
