Challenge - 5 Problems
Queue Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of Enqueue and Dequeue Operations
What is the printed state of the queue after performing these operations?
Operations:
1. Enqueue 10
2. Enqueue 20
3. Enqueue 30
4. Dequeue
5. Enqueue 40
Operations:
1. Enqueue 10
2. Enqueue 20
3. Enqueue 30
4. Dequeue
5. Enqueue 40
DSA Python
class Node: def __init__(self, data): self.data = data self.next = None class Queue: def __init__(self): self.front = None self.rear = None def enqueue(self, data): new_node = Node(data) if self.rear is None: self.front = self.rear = new_node return self.rear.next = new_node self.rear = new_node def dequeue(self): if self.front is None: return None temp = self.front self.front = temp.next if self.front is None: self.rear = None return temp.data def print_queue(self): current = self.front result = [] while current: result.append(current.data) current = current.next print(" -> ".join(map(str, result)) + " -> null") q = Queue() q.enqueue(10) q.enqueue(20) q.enqueue(30) q.dequeue() q.enqueue(40) q.print_queue()
Attempts:
2 left
💡 Hint
Remember that dequeue removes from the front of the queue.
✗ Incorrect
After enqueueing 10, 20, 30, the queue is 10 -> 20 -> 30 -> null. Dequeue removes 10, so queue becomes 20 -> 30 -> null. Enqueue 40 adds it at the rear, so final queue is 20 -> 30 -> 40 -> null.
🧠 Conceptual
intermediate1:30remaining
Queue Front and Rear After Operations
After performing these operations on an empty queue:
enqueue(5), enqueue(15), dequeue(), enqueue(25), dequeue()
What are the values at the front and rear of the queue?
enqueue(5), enqueue(15), dequeue(), enqueue(25), dequeue()
What are the values at the front and rear of the queue?
Attempts:
2 left
💡 Hint
Track each operation carefully and update front and rear pointers.
✗ Incorrect
Operations step-by-step:
- enqueue(5): front=5, rear=5
- enqueue(15): front=5, rear=15
- dequeue(): removes 5, front=15, rear=15
- enqueue(25): front=15, rear=25
- dequeue(): removes 15, front=25, rear=25
So both front and rear point to 25.
🔧 Debug
advanced2:00remaining
Identify the Bug in Dequeue Method
What error will this code raise when dequeue is called on an empty queue?
DSA Python
class Node: def __init__(self, data): self.data = data self.next = None class Queue: def __init__(self): self.front = None self.rear = None def dequeue(self): temp = self.front self.front = temp.next if self.front is None: self.rear = None return temp.data q = Queue() q.dequeue()
Attempts:
2 left
💡 Hint
Check what happens when front is null and you try to access temp.next.
✗ Incorrect
When the queue is empty, front is null. The code tries to access temp.next where temp is null, causing AttributeError.
📝 Syntax
advanced1:30remaining
Syntax Error in Enqueue Method
Which option contains the correct enqueue method for a linked list queue?
Attempts:
2 left
💡 Hint
Look for missing colons and proper if-else structure.
✗ Incorrect
Option A has correct syntax with colons after if and else, and proper assignment. Options B and C miss colons causing SyntaxError. Option A has an unnecessary return but is syntactically valid; however, the trailing comma in the option text is not part of code and does not cause error, so option A is valid syntax but the trailing comma is not code. To avoid ambiguity, option A is the best correct answer.
🚀 Application
expert2:30remaining
Queue Size After Mixed Operations
Given the following sequence of operations on an empty queue, what is the size of the queue at the end?
enqueue(1), enqueue(2), dequeue(), enqueue(3), enqueue(4), dequeue(), dequeue(), enqueue(5)
enqueue(1), enqueue(2), dequeue(), enqueue(3), enqueue(4), dequeue(), dequeue(), enqueue(5)
DSA Python
class Node: def __init__(self, data): self.data = data self.next = None class Queue: def __init__(self): self.front = None self.rear = None self.size = 0 def enqueue(self, data): new_node = Node(data) if self.rear is None: self.front = self.rear = new_node else: self.rear.next = new_node self.rear = new_node self.size += 1 def dequeue(self): if self.front is None: return None temp = self.front self.front = temp.next if self.front is None: self.rear = None self.size -= 1 return temp.data q = Queue() q.enqueue(1) q.enqueue(2) q.dequeue() q.enqueue(3) q.enqueue(4) q.dequeue() q.dequeue() q.enqueue(5) print(q.size)
Attempts:
2 left
💡 Hint
Count each enqueue as +1 and each dequeue as -1 carefully.
✗ Incorrect
Operations and size changes:
- enqueue(1): size=1
- enqueue(2): size=2
- dequeue(): size=1
- enqueue(3): size=2
- enqueue(4): size=3
- dequeue(): size=2
- dequeue(): size=1
- enqueue(5): size=2
Final size is 2.