| 1 | Start with empty list | ā
| head = None | List is empty |
| 2 | Create new node with data=10 | Node(10) | new_node.next = None | new_node: [10 | next: ā
] |
| 3 | Check if list is empty | Node(10) | head is None ā True | No links yet |
| 4 | Point new_node.next to itself (single node circular) | Node(10) | new_node.next = new_node | āāāāāāāāāā
ā data:10ā
ā next:āāā¼āāā (points to self)
āāāāāāāāāā
head ā new_node |
| 5 | Update head to new_node | Node(10) | head = new_node | āāāāāāāāāā
ā data:10ā
ā next:āāā¼āāā (points to self)
āāāāāāāāāā
head ā new_node |
| 6 | Insert new node with data=20 at beginning | Node(10) ā Node(20) | Create new_node(20) | new_node: [20 | next: ā
] |
| 7 | Traverse to last node (node with data=10) | Node(10) ā Node(20) | current = head (10)
current.next != head? No (points to 10 itself) | āāāāāāāāāā āāāāāāāāāā
ā data:10ā ā data:20ā
ā next:āāā¼āāā ā next: ā
ā
āāāāāāāāāā āāāāāāāāāā
head |
| 8 | Set last_node.next to new_node | Node(10) ā Node(20) | last_node(10).next = new_node(20) | āāāāāāāāāā āāāāāāāāāā
ā data:10ā ā data:20ā
ā next:āāā¼āāā ā next: ā
ā
āāāāāāāāāā āāāāāāāāāā
head |
| 9 | Set new_node.next to old head | Node(10) ā Node(20) | new_node(20).next = head(10) | āāāāāāāāāā āāāāāāāāāā
ā data:10ā ā data:20ā
ā next:āāā¼āāā ā next:āāā¼āāā
āāāāāāāāāā āāāāāāāāāā
head new_node |
| 10 | Update head to new_node | Node(20) ā Node(10) | head = new_node(20) | āāāāāāāāāā āāāāāāāāāā
ā data:20ā ā data:10ā
ā next:āāā¼āāā ā next:āāā¼āāā
āāāāāāāāāā āāāāāāāāāā
head last_node
(new head) |
| 11 | Insert new node with data=30 at beginning | Node(20) ā Node(10) ā Node(30) | Create new_node(30) | new_node: [30 | next: ā
] |
| 12 | Traverse to last node (node with data=10) | Node(20) ā Node(10) ā Node(30) | current = head(20)
current.next != head? Yes (10)
Move to 10
current.next != head? No (20) | āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
ā data:20ā ā data:10ā ā data:30ā
ā next:āāā¼āāā ā next:āāā¼āāā ā next: ā
ā
āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
head |
| 13 | Set last_node.next to new_node | Node(20) ā Node(10) ā Node(30) | last_node(10).next = new_node(30) | āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
ā data:20ā ā data:10ā ā data:30ā
ā next:āāā¼āāā ā next:āāā¼āāā ā next: ā
ā
āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
head |
| 14 | Set new_node.next to old head | Node(20) ā Node(10) ā Node(30) | new_node(30).next = head(20) | āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
ā data:20ā ā data:10ā ā data:30ā
ā next:āāā¼āāā ā next:āāā¼āāā ā next:āāā¼āāā
āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
head last_node |
| 15 | Update head to new_node | Node(30) ā Node(20) ā Node(10) | head = new_node(30) | āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
ā data:30ā ā data:20ā ā data:10ā
ā next:āāā¼āāā ā next:āāā¼āāā ā next:āāā¼āāā
āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
head second last_node |
| 16 | Stop | Node(30) ā Node(20) ā Node(10) | Insertion complete | Circular linked list updated with new head |