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 Linked List Queue
What is the printed state of the queue after enqueuing 10, 20, and 30 in order?
DSA Go
package main import "fmt" type Node struct { value int next *Node } type Queue struct { front *Node rear *Node } func (q *Queue) Enqueue(val int) { newNode := &Node{value: val} if q.rear == nil { q.front = newNode q.rear = newNode return } q.rear.next = newNode q.rear = newNode } func (q *Queue) Print() { current := q.front for current != nil { fmt.Print(current.value) if current.next != nil { fmt.Print(" -> ") } current = current.next } fmt.Println(" -> null") } func main() { q := &Queue{} q.Enqueue(10) q.Enqueue(20) q.Enqueue(30) q.Print() }
Attempts:
2 left
💡 Hint
Remember, enqueue adds elements at the rear of the queue.
✗ Incorrect
Enqueue adds elements at the rear. So the order remains 10, then 20, then 30.
❓ Predict Output
intermediateResult of Enqueue on Empty Queue
What will be the printed output after enqueuing a single element 5 into an empty linked list queue?
DSA Go
package main import "fmt" type Node struct { value int next *Node } type Queue struct { front *Node rear *Node } func (q *Queue) Enqueue(val int) { newNode := &Node{value: val} if q.rear == nil { q.front = newNode q.rear = newNode return } q.rear.next = newNode q.rear = newNode } func (q *Queue) Print() { current := q.front for current != nil { fmt.Print(current.value) if current.next != nil { fmt.Print(" -> ") } current = current.next } fmt.Println(" -> null") } func main() { q := &Queue{} q.Enqueue(5) q.Print() }
Attempts:
2 left
💡 Hint
Check how enqueue handles the empty queue case.
✗ Incorrect
When the queue is empty, both front and rear point to the new node with value 5.
🔧 Debug
advancedIdentify the Error in Enqueue Implementation
What error will occur when running this enqueue code on an empty queue?
DSA Go
package main import "fmt" type Node struct { value int next *Node } type Queue struct { front *Node rear *Node } func (q *Queue) Enqueue(val int) { newNode := &Node{value: val} if q.front == nil { q.front = newNode // Missing assignment to rear return } q.rear.next = newNode q.rear = newNode } func (q *Queue) Print() { current := q.front for current != nil { fmt.Print(current.value) if current.next != nil { fmt.Print(" -> ") } current = current.next } fmt.Println(" -> null") } func main() { q := &Queue{} q.Enqueue(1) q.Enqueue(2) q.Print() }
Attempts:
2 left
💡 Hint
Check what happens to q.rear when queue is empty.
✗ Incorrect
The rear pointer is not set when the queue is empty, so q.rear is nil. Accessing q.rear.next causes a runtime error.
🧠 Conceptual
advancedWhy Use Rear Pointer in Linked List Queue?
Why is it important to maintain a rear pointer in a linked list implementation of a queue?
Attempts:
2 left
💡 Hint
Think about how adding elements at the end works in a linked list.
✗ Incorrect
The rear pointer lets us add new nodes at the end quickly without traversing the whole list, making enqueue O(1).
❓ Predict Output
expertFinal Queue State After Mixed Enqueue Operations
Given the following enqueue operations on an initially empty queue, what is the final printed queue state?
DSA Go
package main import "fmt" type Node struct { value int next *Node } type Queue struct { front *Node rear *Node } func (q *Queue) Enqueue(val int) { newNode := &Node{value: val} if q.rear == nil { q.front = newNode q.rear = newNode return } q.rear.next = newNode q.rear = newNode } func (q *Queue) Print() { current := q.front for current != nil { fmt.Print(current.value) if current.next != nil { fmt.Print(" -> ") } current = current.next } fmt.Println(" -> null") } func main() { q := &Queue{} q.Enqueue(7) q.Enqueue(14) q.Enqueue(21) q.Enqueue(28) q.Print() }
Attempts:
2 left
💡 Hint
Enqueue adds elements at the rear in order.
✗ Incorrect
Elements are added at the rear, so the order is the same as insertion: 7, 14, 21, 28.
