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 this new node.
Node newNode = new Node(5);
newNode.next = head;
head = newNode;| Step | Operation | Nodes in List | Pointer Changes | Visual State |
|---|---|---|---|---|
| 1 | Create new node with data=5 | null | newNode → Node(5, next=null) | null (empty list) |
| 2 | Set newNode.next = head (null) | null | newNode.next = null | newNode(5) → ∅ |
| 3 | Update head = newNode | Node(5) | head → newNode | head → Node(5) → ∅ |
| 4 | Insert another node with data=10 | Node(5) | newNode → Node(10, next=null) | head → Node(5) → ∅ |
| 5 | Set newNode.next = head (Node(5)) | Node(5) | newNode.next = head | newNode(10) → Node(5) → ∅ |
| 6 | Update head = newNode | Node(10) → Node(5) | head → newNode | head → Node(10) → Node(5) → ∅ |
| 7 | Termination | Node(10) → Node(5) | No more operations | Final list: head → 10 → 5 → ∅ |
| Variable | Start | After Step 1 | After Step 2 | After Step 3 | After Step 4 | After Step 5 | After Step 6 | Final |
|---|---|---|---|---|---|---|---|---|
| head | null | null | null | Node(5) | Node(5) | Node(5) | Node(10) | Node(10) |
| newNode | null | Node(5) | Node(5) | Node(5) | Node(10) | Node(10) | Node(10) | Node(10) |
| newNode.next | null | null | null | null | null | Node(5) | Node(5) | Node(5) |
Insert at Beginning (Head Insert): - Create new node - Set newNode.next = head - Update head = newNode - New node becomes first in list - Works even if list is empty
list with value 5?new Node(5, list.head) creates a new node pointing to current head.list.head = new Node(5, list.head); inserts at beginning correctly.class Node {
int data;
Node next;
Node(int d, Node n) { data = d; next = n; }
}
Node head = new Node(3, null);
head = new Node(2, head);
head = new Node(1, head);
// Print list
Node temp = head;
while(temp != null) {
System.out.print(temp.data + " -> ");
temp = temp.next;
}
System.out.print("null");class Node {
int data;
Node next;
Node(int d) { data = d; next = null; }
}
Node head = null;
Node newNode = new Node(10);
newNode.next = head.next;
head = newNode;head.next access is invalid and causes error.newNode.next = head.next; throws NullPointerException because head is null.class Node {
int data;
Node next;
Node(int d) { data = d; next = null; }
}
Node head = new Node(4);
head.next = new Node(5);
head.next.next = new Node(6);
// Insert new node with value 3 at beginning and print list
// Fill in the blanks below
// Insert code here
// Print code here
Pass the test and this pattern moves unknown