📖 Scenario: You are managing a circular linked list that represents a round-robin queue of tasks. You need to add a new task at the beginning of the queue so it gets priority.
🎯 Goal: Build a circular linked list and write code to insert a new node at the beginning, maintaining the circular structure.
📋 What You'll Learn
Create a Node class with data and next attributes
Create a circular linked list with three nodes containing data 10, 20, and 30
Create a function insert_at_beginning(head, data) that inserts a new node at the start
Print the circular linked list starting from the head after insertion
💡 Why This Matters
🌍 Real World
Circular linked lists are used in real-world systems like task schedulers, multiplayer games turn management, and buffering data streams where the list loops back to the start.
💼 Career
Understanding circular linked lists and insertion operations is important for software engineers working on system programming, embedded systems, and applications requiring efficient cyclic data management.
Progress0 / 4 steps
1
Create the Circular Linked List with 3 Nodes
Create a class called Node with attributes data and next. Then create three nodes with data 10, 20, and 30. Link them in a circular way so that the last node points back to the first node. Assign the first node to a variable called head.
DSA Python
Hint
Remember to make the last node point back to the first node to form a circle.
2
Create a Function to Insert at Beginning
Create a function called insert_at_beginning(head, data) that creates a new node with the given data and inserts it at the beginning of the circular linked list. The function should return the new head of the list.
DSA Python
Hint
Traverse to the last node to update its next pointer to the new node.
3
Insert a New Node with Data 5 at Beginning
Use the function insert_at_beginning(head, 5) to insert a new node with data 5 at the beginning of the circular linked list. Update the head variable to the returned new head.
DSA Python
Hint
Call the function and assign its result back to head.
4
Print the Circular Linked List Starting from Head
Write code to print the circular linked list starting from head. Print each node's data followed by ->. Stop printing when you reach the head again. End the output with null.
DSA Python
Hint
Use a while True loop and break when you reach the head again.
Practice
(1/5)
1. What happens when you insert a new node at the beginning of a circular linked list?
easy
A. The new node replaces the last node in the list.
B. The new node becomes the head and points to the old head, maintaining the circular link.
C. The list breaks and becomes a linear linked list.
D. The new node is added at the end and does not affect the head.
Solution
Step 1: Understand the circular linked list structure
A circular linked list has its last node pointing back to the head node, forming a circle.
Step 2: Insert new node at beginning
The new node is linked to the current head, and the last node's next pointer is updated to this new node, making it the new head.
Final Answer:
The new node becomes the head and points to the old head, maintaining the circular link. -> Option B
Quick Check:
New head points to old head, last node points to new head [OK]
Hint: New head points to old head, last node points to new head [OK]
Common Mistakes:
Forgetting to update last node's next pointer
Breaking the circular link by not linking last node
Replacing the last node instead of adding new head
2. Which of the following is the correct syntax to create a new node and insert it at the beginning of a circular linked list in Python?
easy
A. new_node = Node(data); new_node.next = head; head = new_node
B. new_node = Node(data); last.next = head; head = new_node
C. new_node = Node(data); head.next = new_node; new_node.next = head
D. new_node = Node(data); new_node.next = head; last.next = new_node; head = new_node
Solution
Step 1: Create new node and link to current head
We create a new node and set its next pointer to the current head.
Step 2: Update last node's next pointer and head
Since it's circular, last node's next must point to new node, then update head to new node.
Final Answer:
new_node = Node(data); new_node.next = head; last.next = new_node; head = new_node -> Option D
Quick Check:
New node points to old head, last points to new node, head updated [OK]
Hint: Update last.next to new node before changing head [OK]
Common Mistakes:
Not updating last.next to new node
Changing head before updating last.next
Linking new node incorrectly
3. What will be the output of the following code snippet after inserting 10 at the beginning of the circular linked list?
class Node:
def __init__(self, data):
self.data = data
self.next = None
def print_list(head):
temp = head
if head is not None:
while True:
print(temp.data, end=' -> ')
temp = temp.next
if temp == head:
break
print('null')
# Initial circular linked list: 20 -> 30 -> 40 -> null
head = Node(20)
second = Node(30)
third = Node(40)
head.next = second
second.next = third
third.next = head
# Insert 10 at beginning
new_node = Node(10)
new_node.next = head
third.next = new_node
head = new_node
print_list(head)
medium
A. 10 -> 30 -> 40 -> 20 -> null
B. 20 -> 30 -> 40 -> 10 -> null
C. 10 -> 20 -> 30 -> 40 -> null
D. 30 -> 40 -> 20 -> 10 -> null
Solution
Step 1: Understand the initial list and insertion
The list is 20 -> 30 -> 40 -> back to 20. Inserting 10 at beginning means new_node points to old head (20), and last node (40) points to new_node.
Step 2: Trace the print_list function
Starting from new head (10), it prints 10, then 20, then 30, then 40, then stops when it reaches head again.
Final Answer:
10 -> 20 -> 30 -> 40 -> null -> Option C
Quick Check:
New head 10 followed by old nodes in order [OK]
Hint: New head prints first, then old nodes in order [OK]
Common Mistakes:
Not updating last node's next pointer
Printing from old head instead of new head
Confusing order of nodes after insertion
4. Identify the error in the following code that inserts a new node at the beginning of a circular linked list:
def insert_begin(head, data):
new_node = Node(data)
new_node.next = head
head = new_node
return head
medium
A. The last node's next pointer is not updated to new_node, breaking the circular link.
B. The new_node.next should point to null instead of head.
C. The head should not be updated to new_node.
D. The function should not return head.
Solution
Step 1: Check pointer updates for circular list
In a circular linked list, the last node's next pointer must point to the head node to maintain the circle.
Step 2: Identify missing update
The code updates new_node.next and head but does not update the last node's next pointer to new_node, breaking the circle.
Final Answer:
The last node's next pointer is not updated to new_node, breaking the circular link. -> Option A
Quick Check:
Last node must point to new head to keep circle [OK]
Hint: Always update last.next to new head in circular list [OK]
Common Mistakes:
Ignoring last node pointer update
Setting new_node.next to null
Not returning updated head
5. Given a circular linked list with nodes 5 -> 15 -> 25 -> back to 5, write the steps to insert a new node with value 1 at the beginning and then print the list. What will be the printed output?
hard
A. 1 -> 5 -> 15 -> 25 -> null
B. 5 -> 15 -> 25 -> 1 -> null
C. 1 -> 15 -> 25 -> 5 -> null
D. 25 -> 5 -> 15 -> 1 -> null
Solution
Step 1: Insert new node at beginning
Create new node with value 1, set its next to current head (5), update last node (25) next to new node, then update head to new node.
Step 2: Print the circular linked list
Start from new head (1), print nodes in order: 1, 5, 15, 25, then stop when back to head.
Final Answer:
1 -> 5 -> 15 -> 25 -> null -> Option A
Quick Check:
New head 1 followed by old nodes in order [OK]
Hint: Update last.next before changing head to new node [OK]
Common Mistakes:
Not updating last node's next pointer
Printing from old head instead of new head
Confusing node order after insertion
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.