Concept Flow - Insert at Beginning Head Insert
Create new node
New node.next = head
head = new node
Done
Insert a new node by creating it, pointing it to the current head, then updating head to this new node.
class Node { data: number; next: Node | null; constructor(data: number) { this.data = data; this.next = null; } } function insertAtBeginning(head: Node | null, data: number): Node { const newNode = new Node(data); newNode.next = head; return newNode; } // Example usage: let head: Node | null = null; head = insertAtBeginning(head, 10); head = insertAtBeginning(head, 20);
| Step | Operation | Nodes in List | Pointer Changes | Visual State |
|---|---|---|---|---|
| 1 | Insert 10 at beginning | None ā 1 node | newNode.next = null (head was null), head = newNode | āāāāāāāāāā ā data:10ā ā next:ā ā āāāāāāāāāā head ā newNode |
| 2 | Insert 20 at beginning | 1 node ā 2 nodes | newNode.next = old head (node 10), head = newNode | āāāāāāāāāā āāāāāāāāāā ā data:20ā ā data:10ā ā next:āāā¼āāā ā next:ā ā āāāāāāāāāā āāāāāāāāāā head ā newNode |
| 3 | Insert 30 at beginning | 2 nodes ā 3 nodes | newNode.next = old head (node 20), head = newNode | āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā ā data:30ā ā data:20ā ā data:10ā ā next:āāā¼āāā ā next:āāā¼āāā ā next:ā ā āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā head ā newNode |
| 4 | End of insertions | 3 nodes | No pointer changes | Final list: 30 ā 20 ā 10 ā null |
| Variable | Start | After Step 1 | After Step 2 | After Step 3 | Final |
|---|---|---|---|---|---|
| head | null | Node(10) | Node(20) | Node(30) | Node(30) |
| newNode | undefined | Node(10) | Node(20) | Node(30) | Node(30) |
| newNode.next | undefined | null | Node(10) | Node(20) | Node(20) |
Insert at Beginning (Head Insert): - Create new node with data - Set newNode.next = current head - Update head = newNode - New node becomes list start - Runs in O(1) time - List grows at front
class Node {
value: number;
next: Node | null = null;
constructor(value: number) { this.value = value; }
}
let head: Node | null = new Node(10);
let newNode = new Node(5);
newNode.next = head;
head = newNode;class Node {
value: number;
next: Node | null = null;
constructor(value: number) { this.value = value; }
}
let head: Node | null = null;
let newNode = new Node(7);
head.next = newNode;
head = newNode;Pass the test and this pattern moves unknown