Concept Flow - Insert at Beginning Head Insert
Create new node
Set new_node.next = head
Update head = new_node
Done
The new node is created, its next pointer set to the current head, then head is updated to this new node.
class Node { constructor(data) { this.data = data; this.next = null; } } // Insert 5 at beginning let head = null; let newNode = new Node(5); newNode.next = head; head = newNode;
| Step | Operation | Nodes in List | Pointer Changes | Visual State |
|---|---|---|---|---|
| 1 | Start with empty list | ā | head = null | List is empty |
| 2 | Create new node with data=5 | Node(5) ā ā | newNode created, next=null | āāāāāāāāāā ā data:5 ā ā next:ā ā āāāāāāāāāā |
| 3 | Set newNode.next = head (null) | Node(5) ā ā | newNode.next = null | āāāāāāāāāā ā data:5 ā ā next:ā ā āāāāāāāāāā |
| 4 | Update head = newNode | Node(5) ā ā | head points to newNode | head āāāāāāāāāā ā data:5 ā ā next:ā ā āāāāāāāāāā |
| 5 | End | Node(5) ā ā | head points to Node(5) | head āāāāāāāāāā ā data:5 ā ā next:ā ā āāāāāāāāāā |
| Variable | Start | After Step 2 | After Step 3 | After Step 4 | Final |
|---|---|---|---|---|---|
| head | null | null | null | Node(5) | Node(5) |
| newNode | undefined | Node(5) | Node(5) | Node(5) | Node(5) |
| newNode.next | undefined | null | null | null | null |
Insert at Beginning (Head Insert): - Create new node with data - Set newNode.next = current head - Update head = newNode - New node becomes first in list - Works even if list is empty
class Node {
constructor(data) {
this.data = data;
this.next = null;
}
}
let head = new Node(10);
let newNode = new Node(20);
newNode.next = head;
head = newNode;
// Print list
let current = head;
let result = [];
while(current) {
result.push(current.data);
current = current.next;
}
console.log(result);class Node {
constructor(data) {
this.data = data;
this.next = null;
}
}
let head = new Node(5);
let newNode = new Node(15);
head = newNode;
newNode.next = head;Pass the test and this pattern moves unknown