0
0
DSA Pythonprogramming~20 mins

Enqueue Using Linked List in DSA Python - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Linked List Queue Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output after multiple enqueues in a linked list queue
What is the printed state of the queue after enqueuing 10, 20, and 30 in order?
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 print_queue(self):
        current = self.front
        while current:
            print(current.data, end=' -> ')
            current = current.next
        print('null')

q = Queue()
q.enqueue(10)
q.enqueue(20)
q.enqueue(30)
q.print_queue()
Anull
B30 -> 20 -> 10 -> null
C10 -> 30 -> 20 -> null
D10 -> 20 -> 30 -> null
Attempts:
2 left
💡 Hint
Remember, enqueue adds to the rear of the queue.
Predict Output
intermediate
1:30remaining
Output after enqueuing a single element in an empty queue
What is the printed state of the queue after enqueuing only the element 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

    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 print_queue(self):
        current = self.front
        while current:
            print(current.data, end=' -> ')
            current = current.next
        print('null')

q = Queue()
q.enqueue(5)
q.print_queue()
A5 -> null
B5
Cnull
DError
Attempts:
2 left
💡 Hint
Check how enqueue handles the empty queue case.
🔧 Debug
advanced
2:00remaining
Identify the error in enqueue method
What error will occur when running this enqueue method code?
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 == None:
            self.front = new_node
        else:
            self.rear.next = new_node
        self.rear = new_node

q = Queue()
q.enqueue(1)
q.enqueue(2)
print(q.front.data, q.rear.data)
ATypeError: unsupported operand type(s)
BAttributeError: 'NoneType' object has no attribute 'next'
CPrints: 1 2
DIndexError: list index out of range
Attempts:
2 left
💡 Hint
Check how the rear pointer is updated when the queue is empty.
🧠 Conceptual
advanced
1:30remaining
Why is rear pointer needed in linked list queue?
Why do we keep a rear pointer in a linked list implementation of a queue?
ATo reverse the queue easily
BTo allow enqueue operation in O(1) time by adding at the end directly
CTo allow dequeue operation in O(1) time by removing from the end
DTo keep track of the number of elements in the queue
Attempts:
2 left
💡 Hint
Think about how adding elements at the end works without rear pointer.
Predict Output
expert
3:00remaining
Final queue state after mixed enqueues and dequeues
Given the following operations, what is the printed queue state at the end?
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
        while current:
            print(current.data, end=' -> ')
            current = current.next
        print('null')

q = Queue()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
q.dequeue()
q.enqueue(4)
q.dequeue()
q.enqueue(5)
q.print_queue()
A3 -> 4 -> 5 -> null
B1 -> 2 -> 3 -> 4 -> 5 -> null
C4 -> 5 -> null
D2 -> 3 -> 4 -> 5 -> null
Attempts:
2 left
💡 Hint
Trace each enqueue and dequeue step carefully.