Concept Flow - Insert at Beginning Head Insert
Create new node
Set new_node->next = head
Update head = new_node
Done
Insert a new node by creating it, linking it to the current head, then updating head to the new node.
Node* new_node = new Node(5);
new_node->next = head;
head = new_node;| Step | Operation | Nodes in List | Pointer Changes | Visual State |
|---|---|---|---|---|
| 1 | Create new node with data=5 | ā (empty list) | new_node created, next=ā | ā |
| 2 | Set new_node.next = head (which is ā ) | ā | new_node.next ā ā | new_node(data:5, next:ā ) |
| 3 | Update head = new_node | 5 ā ā | head ā new_node | āāāāāāāāāā ā data:5 ā ā next:ā ā āāāāāāāāāā head |
| 4 | End of insertion | 5 ā ā | head points to new node | āāāāāāāāāā ā data:5 ā ā next:ā ā āāāāāāāāāā head |
| Variable | Start | After Step 1 | After Step 2 | After Step 3 | Final |
|---|---|---|---|---|---|
| head | ā | ā | ā | points to new_node | points to new_node |
| new_node | N/A | node(5, next:ā ) | node(5, next:ā ) | node(5, next:ā ) | node(5, next:ā ) |
Insert at Beginning (Head Insert): - Create new node - Set new_node.next = head - Update head = new_node - New node becomes first in list - Works for empty or non-empty lists
struct Node { int data; Node* next; };
Node* head = nullptr;
Node* newNode = new Node{10, nullptr};
newNode->next = head;
head = newNode;
newNode = new Node{20, nullptr};
newNode->next = head;
head = newNode;Node* newNode = new Node(); newNode->data = 5; head = newNode; newNode->next = head;
Pass the test and this pattern moves unknown