| 1 | Create new node with data=10 | empty | newNode.next = null | ā
(empty list) |
| 2 | Check if list is empty | empty | head == null ā True | ā
(empty list) |
| 3 | Set newNode.next = newNode (self loop) | 1 node | newNode.next ā newNode | āāāāāāāāāā
ā data:10ā
ā next:āāā¼āāā (points to self)
āāāāāāāāāā
head ā newNode |
| 4 | Set head = newNode | 1 node | head ā newNode | āāāāāāāāāā
ā data:10ā
ā next:āāā¼āāā (points to self)
āāāāāāāāāā
head ā newNode |
| 5 | Insert 20 at beginning (new node) | 1 node | newNode.next = null | āāāāāāāāāā
ā data:10ā
ā next:āāā¼āāā (points to self)
āāāāāāāāāā
head ā node10 |
| 6 | Check if list empty | 1 node | head != null ā False | āāāāāāāāāā
ā data:10ā
ā next:āāā¼āāā (points to self)
āāāāāāāāāā
head ā node10 |
| 7 | Traverse to last node (node10.next == head) | 1 node | lastNode = node10 | āāāāāāāāāā
ā data:10ā
ā next:āāā¼āāā (points to head)
āāāāāāāāāā
head ā node10 |
| 8 | Set lastNode.next = newNode(20) | 2 nodes | node10.next ā newNode20 | āāāāāāāāāā āāāāāāāāāā
ā data:10ā ā data:20ā
ā next:āāā¼āāā ā next:āāā¼āāā ?
āāāāāāāāāā āāāāāāāāāā
head ā node10 |
| 9 | Set newNode.next = head (node10) | 2 nodes | newNode20.next ā node10 | āāāāāāāāāā āāāāāāāāāā
ā data:10ā ā data:20ā
ā next:āāā¼āāā ā next:āāā¼āāā (points to node10)
āāāāāāāāāā āāāāāāāāāā
head ā node10 |
| 10 | Update head = newNode (20) | 2 nodes | head ā newNode20 | āāāāāāāāāā āāāāāāāāāā
ā data:20ā ā data:10ā
ā next:āāā¼āāā ā next:āāā¼āāā (points to head)
āāāāāāāāāā āāāāāāāāāā
head ā node20 |
| 11 | Insert 30 at beginning (new node) | 2 nodes | newNode.next = null | āāāāāāāāāā āāāāāāāāāā
ā data:20ā ā data:10ā
ā next:āāā¼āāā ā next:āāā¼āāā (points to head)
āāāāāāāāāā āāāāāāāāāā
head ā node20 |
| 12 | Check if list empty | 2 nodes | head != null ā False | āāāāāāāāāā āāāāāāāāāā
ā data:20ā ā data:10ā
ā next:āāā¼āāā ā next:āāā¼āāā (points to head)
āāāāāāāāāā āāāāāāāāāā
head ā node20 |
| 13 | Traverse to last node (node10.next == head) | 2 nodes | lastNode = node10 | āāāāāāāāāā āāāāāāāāāā
ā data:20ā ā data:10ā
ā next:āāā¼āāā ā next:āāā¼āāā (points to head)
āāāāāāāāāā āāāāāāāāāā
head ā node20 |
| 14 | Set lastNode.next = newNode(30) | 3 nodes | node10.next ā newNode30 | āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
ā data:20ā ā data:10ā ā data:30ā
ā next:āāā¼āāā ā next:āāā¼āāā ā next:āāā¼āāā ?
āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
head ā node20 |
| 15 | Set newNode.next = head (node20) | 3 nodes | newNode30.next ā node20 | āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
ā data:20ā ā data:10ā ā data:30ā
ā next:āāā¼āāā ā next:āāā¼āāā ā next:āāā¼āāā (points to head)
āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
head ā node20 |
| 16 | Update head = newNode (30) | 3 nodes | head ā newNode30 | āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
ā data:30ā ā data:20ā ā data:10ā
ā next:āāā¼āāā ā next:āāā¼āāā ā next:āāā¼āāā (points to head)
āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā
head ā node30 |
| 17 | Stop | 3 nodes | Insertion complete | Final list: 30 ā 20 ā 10 ā (back to 30) |