Challenge - 5 Problems
Dequeue Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediateOutput of Dequeue Operations
What is the printed state of the dequeue after the following operations?
Operations:
1. Insert 10 at rear
2. Insert 20 at front
3. Insert 30 at rear
4. Delete from front
5. Insert 40 at front
Operations:
1. Insert 10 at rear
2. Insert 20 at front
3. Insert 30 at rear
4. Delete from front
5. Insert 40 at front
DSA Java
class Node { int data; Node next, prev; Node(int d) { data = d; next = prev = null; } } class Dequeue { Node front, rear; void insertFront(int x) { Node newNode = new Node(x); if (front == null) { front = rear = newNode; return; } newNode.next = front; front.prev = newNode; front = newNode; } void insertRear(int x) { Node newNode = new Node(x); if (rear == null) { front = rear = newNode; return; } rear.next = newNode; newNode.prev = rear; rear = newNode; } void deleteFront() { if (front == null) return; if (front == rear) { front = rear = null; return; } front = front.next; front.prev = null; } void printDequeue() { Node temp = front; while (temp != null) { System.out.print(temp.data + " -> "); temp = temp.next; } System.out.println("null"); } } public class Main { public static void main(String[] args) { Dequeue dq = new Dequeue(); dq.insertRear(10); dq.insertFront(20); dq.insertRear(30); dq.deleteFront(); dq.insertFront(40); dq.printDequeue(); } }
Attempts:
2 left
💡 Hint
Trace each operation step-by-step and update the dequeue state.
✗ Incorrect
After inserting 10 at rear: 10 -> null
Insert 20 at front: 20 -> 10 -> null
Insert 30 at rear: 20 -> 10 -> 30 -> null
Delete from front removes 20: 10 -> 30 -> null
Insert 40 at front: 40 -> 10 -> 30 -> null
🧠 Conceptual
intermediateUnderstanding Dequeue Front and Rear Pointers
In a dequeue implemented using a doubly linked list, what happens to the front and rear pointers when the last element is deleted?
Attempts:
2 left
💡 Hint
Consider what happens when the dequeue becomes empty.
✗ Incorrect
When the last element is deleted, the dequeue becomes empty, so both front and rear pointers must be set to null to indicate no elements.
🔧 Debug
advancedIdentify the Bug in Dequeue Insert Front Method
What error will occur when running this insertFront method in a dequeue implemented with a doubly linked list?
DSA Java
void insertFront(int x) { Node newNode = new Node(x); if (front == null) { front = newNode; return; } newNode.next = front; front.prev = newNode; front = newNode; }
Attempts:
2 left
💡 Hint
Check what happens to rear pointer when inserting the first node.
✗ Incorrect
When the dequeue is empty, only front is set to newNode but rear remains null. This causes errors when rear operations are performed because rear is not initialized.
❓ Predict Output
advancedOutput After Mixed Dequeue Operations
What is the printed state of the dequeue after these operations?
Operations:
1. Insert 5 at rear
2. Insert 15 at rear
3. Insert 25 at front
4. Delete from rear
5. Delete from front
Operations:
1. Insert 5 at rear
2. Insert 15 at rear
3. Insert 25 at front
4. Delete from rear
5. Delete from front
DSA Java
class Node { int data; Node next, prev; Node(int d) { data = d; next = prev = null; } } class Dequeue { Node front, rear; void insertFront(int x) { Node newNode = new Node(x); if (front == null) { front = rear = newNode; return; } newNode.next = front; front.prev = newNode; front = newNode; } void insertRear(int x) { Node newNode = new Node(x); if (rear == null) { front = rear = newNode; return; } rear.next = newNode; newNode.prev = rear; rear = newNode; } void deleteFront() { if (front == null) return; if (front == rear) { front = rear = null; return; } front = front.next; front.prev = null; } void deleteRear() { if (rear == null) return; if (front == rear) { front = rear = null; return; } rear = rear.prev; rear.next = null; } void printDequeue() { Node temp = front; while (temp != null) { System.out.print(temp.data + " -> "); temp = temp.next; } System.out.println("null"); } } public class Main { public static void main(String[] args) { Dequeue dq = new Dequeue(); dq.insertRear(5); dq.insertRear(15); dq.insertFront(25); dq.deleteRear(); dq.deleteFront(); dq.printDequeue(); } }
Attempts:
2 left
💡 Hint
Track the list after each operation carefully.
✗ Incorrect
After insertRear(5): 5 -> null
insertRear(15): 5 -> 15 -> null
insertFront(25): 25 -> 5 -> 15 -> null
deleteRear(): removes 15, list is 25 -> 5 -> null
deleteFront(): removes 25, list is 5 -> null
🧠 Conceptual
expertTime Complexity of Dequeue Operations Using Linked List
What is the time complexity of insert and delete operations at both ends in a dequeue implemented using a doubly linked list?
Attempts:
2 left
💡 Hint
Consider how pointers are updated in a doubly linked list.
✗ Incorrect
In a doubly linked list, both ends are directly accessible via pointers, so insertions and deletions at front and rear happen in constant time O(1).
