0
0
DSA Pythonprogramming~20 mins

Insert at End of Circular Linked List in DSA Python - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Circular Linked List Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output after inserting a node at the end of a circular linked list
What is the printed state of the circular linked list after inserting a new node with value 4 at the end?
DSA Python
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class CircularLinkedList:
    def __init__(self):
        self.head = None

    def insert_end(self, data):
        new_node = Node(data)
        if not self.head:
            self.head = new_node
            new_node.next = new_node
            return
        temp = self.head
        while temp.next != self.head:
            temp = temp.next
        temp.next = new_node
        new_node.next = self.head

    def print_list(self):
        if not self.head:
            print('List is empty')
            return
        temp = self.head
        result = []
        while True:
            result.append(str(temp.data))
            temp = temp.next
            if temp == self.head:
                break
        print(' -> '.join(result) + ' -> (head)')

cll = CircularLinkedList()
cll.insert_end(1)
cll.insert_end(2)
cll.insert_end(3)
cll.insert_end(4)
cll.print_list()
A1 -> 2 -> 3 -> 4
B1 -> 2 -> 3 -> (head)
C1 -> 2 -> 3 -> 4 -> (head)
D4 -> 1 -> 2 -> 3 -> (head)
Attempts:
2 left
💡 Hint
Remember that in a circular linked list, the last node points back to the head.
Predict Output
intermediate
2:00remaining
Output after inserting into an empty circular linked list
What is the printed state of the circular linked list after inserting a single node with value 10 into an empty list?
DSA Python
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class CircularLinkedList:
    def __init__(self):
        self.head = None

    def insert_end(self, data):
        new_node = Node(data)
        if not self.head:
            self.head = new_node
            new_node.next = new_node
            return
        temp = self.head
        while temp.next != self.head:
            temp = temp.next
        temp.next = new_node
        new_node.next = self.head

    def print_list(self):
        if not self.head:
            print('List is empty')
            return
        temp = self.head
        result = []
        while True:
            result.append(str(temp.data))
            temp = temp.next
            if temp == self.head:
                break
        print(' -> '.join(result) + ' -> (head)')

cll = CircularLinkedList()
cll.insert_end(10)
cll.print_list()
A10 -> (head)
BList is empty
C10 -> 10 -> (head)
DNone
Attempts:
2 left
💡 Hint
When the list is empty, the new node points to itself.
🔧 Debug
advanced
2:00remaining
Identify the error in circular linked list insertion code
What error will this code produce when inserting a node at the end of a circular linked list?
DSA Python
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class CircularLinkedList:
    def __init__(self):
        self.head = None

    def insert_end(self, data):
        new_node = Node(data)
        if not self.head:
            self.head = new_node
            new_node.next = new_node
            return
        temp = self.head
        while temp.next != None:
            temp = temp.next
        temp.next = new_node
        new_node.next = self.head

cll = CircularLinkedList()
cll.insert_end(5)
cll.insert_end(6)
cll.insert_end(7)
AAttributeError
BSyntaxError
CNo error, runs correctly
DInfinite loop
Attempts:
2 left
💡 Hint
Check the condition in the while loop that finds the last node.
Predict Output
advanced
2:00remaining
Output after multiple insertions at the end of circular linked list
What is the printed state of the circular linked list after inserting nodes with values 10, 20, 30, 40 in that order at the end?
DSA Python
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class CircularLinkedList:
    def __init__(self):
        self.head = None

    def insert_end(self, data):
        new_node = Node(data)
        if not self.head:
            self.head = new_node
            new_node.next = new_node
            return
        temp = self.head
        while temp.next != self.head:
            temp = temp.next
        temp.next = new_node
        new_node.next = self.head

    def print_list(self):
        if not self.head:
            print('List is empty')
            return
        temp = self.head
        result = []
        while True:
            result.append(str(temp.data))
            temp = temp.next
            if temp == self.head:
                break
        print(' -> '.join(result) + ' -> (head)')

cll = CircularLinkedList()
for val in [10, 20, 30, 40]:
    cll.insert_end(val)
cll.print_list()
A10 -> 20 -> 30 -> 40 -> (head)
B40 -> 30 -> 20 -> 10 -> (head)
C10 -> 20 -> 30 -> (head)
DList is empty
Attempts:
2 left
💡 Hint
Nodes are inserted at the end, so order is preserved.
🧠 Conceptual
expert
2:00remaining
Why is the last node's next pointer important in a circular linked list?
In a circular linked list, what is the main reason the last node's next pointer points back to the head node?
ATo prevent insertion of new nodes at the end
BTo allow traversal to continue indefinitely in a loop
CTo store the size of the list in the last node
DTo mark the end of the list with a None value
Attempts:
2 left
💡 Hint
Think about how you can keep moving through nodes without stopping.