Concept Flow - Insert at Beginning Head Insert
Create new node
New node.next = head
head = new node
Done
Insert a new node by making it point to the current head, then update head to this new node.
class Node: def __init__(self, data): self.data = data self.next = None head = None # Insert 10 at beginning new_node = Node(10) new_node.next = head head = new_node
| Step | Operation | Nodes in List | Pointer Changes | Visual State |
|---|---|---|---|---|
| 1 | Start with empty list | None | head = None | List is empty |
| 2 | Create new node with data=10 | Node(10) | new_node created, next=None | āāāāāāāāāā ā data:10ā ā next:ā ā āāāāāāāāāā |
| 3 | Set new_node.next = head (None) | Node(10) | new_node.next = None | āāāāāāāāāā ā data:10ā ā next:ā ā āāāāāāāāāā |
| 4 | Update head = new_node | Node(10) | head ā new_node | āāāāāāāāāā ā data:10ā ā next:ā ā āāāāāāāāāā head |
| 5 | Insert 20 at beginning | Node(20) ā Node(10) | new_node created, new_node.next = head, head = new_node | BEFORE: āāāāāāāāāā āāāāāāāāāā ā data:10ā ā data:20ā ā next:ā ā ā next:ā ā āāāāāāāāāā āāāāāāāāāā head Step 1: new_node.next = head Step 2: head = new_node AFTER: āāāāāāāāāā āāāāāāāāāā ā data:20ā āāā ā data:10ā ā next:āāā¼āāā ā next:ā ā āāāāāāāāāā āāāāāāāāāā head |
| 6 | Insert 30 at beginning | Node(30) ā Node(20) ā Node(10) | new_node created, new_node.next = head, head = new_node | BEFORE: āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā ā data:20ā āāā ā data:10ā ā data:30ā ā next:āāā¼āāā ā next:ā ā ā next:ā ā āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā head Step 1: new_node.next = head Step 2: head = new_node AFTER: āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā ā data:30ā āāā ā data:20ā āāā ā data:10ā ā next:āāā¼āāā ā next:āāā¼āāā ā next:ā ā āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā head |
| 7 | End of insertions | Node(30) ā Node(20) ā Node(10) | No changes | Final list: āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā ā data:30ā āāā ā data:20ā āāā ā data:10ā ā next:āāā¼āāā ā next:āāā¼āāā ā next:ā ā āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā head |
| Variable | Start | After Step 2 | After Step 4 | After Step 5 | After Step 6 | Final |
|---|---|---|---|---|---|---|
| head | None | None | Node(10) | Node(20) | Node(30) | Node(30) |
| new_node | None | Node(10) | Node(10) | Node(20) | Node(30) | Node(30) |
Insert at Beginning (Head Insert): - Create new node - Set new_node.next = head - Update head = new_node - New node becomes first element - Works for empty and non-empty lists