| 1 | Initialize dummy and current pointers | l1: 1 -> 3 -> 5 -> null, l2: 2 -> 4 -> 6 -> null | dummy -> 0, current -> dummy | dummy(0) -> null
l1: 1 -> 3 -> 5
l2: 2 -> 4 -> 6 |
| 2 | Compare l1.val=1 and l2.val=2; 1 <= 2 | Same as above | current.next = l1(1), l1 moves to 3 | dummy(0) -> 1 -> null
l1: 3 -> 5
l2: 2 -> 4 -> 6 |
| 3 | Move current to current.next (1) | Same as above | current -> 1 | dummy(0) -> 1
current at 1
l1: 3 -> 5
l2: 2 -> 4 -> 6 |
| 4 | Compare l1.val=3 and l2.val=2; 3 > 2 | Same as above | current.next = l2(2), l2 moves to 4 | dummy(0) -> 1 -> 2 -> null
l1: 3 -> 5
l2: 4 -> 6 |
| 5 | Move current to current.next (2) | Same as above | current -> 2 | dummy(0) -> 1 -> 2
current at 2
l1: 3 -> 5
l2: 4 -> 6 |
| 6 | Compare l1.val=3 and l2.val=4; 3 <= 4 | Same as above | current.next = l1(3), l1 moves to 5 | dummy(0) -> 1 -> 2 -> 3 -> null
l1: 5
l2: 4 -> 6 |
| 7 | Move current to current.next (3) | Same as above | current -> 3 | dummy(0) -> 1 -> 2 -> 3
current at 3
l1: 5
l2: 4 -> 6 |
| 8 | Compare l1.val=5 and l2.val=4; 5 > 4 | Same as above | current.next = l2(4), l2 moves to 6 | dummy(0) -> 1 -> 2 -> 3 -> 4 -> null
l1: 5
l2: 6 |
| 9 | Move current to current.next (4) | Same as above | current -> 4 | dummy(0) -> 1 -> 2 -> 3 -> 4
current at 4
l1: 5
l2: 6 |
| 10 | Compare l1.val=5 and l2.val=6; 5 <= 6 | Same as above | current.next = l1(5), l1 moves to null | dummy(0) -> 1 -> 2 -> 3 -> 4 -> 5 -> null
l1: null
l2: 6 |
| 11 | Move current to current.next (5) | Same as above | current -> 5 | dummy(0) -> 1 -> 2 -> 3 -> 4 -> 5
current at 5
l1: null
l2: 6 |
| 12 | l1 is null, attach remaining l2 nodes | Same as above | current.next = l2(6) | dummy(0) -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> null
l1: null
l2: 6 |
| 13 | Return merged list starting at dummy.next | Merged list: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> null | No pointer changes | Merged list: 1 -> 2 -> 3 -> 4 -> 5 -> 6 |
| 14 | Exit | All nodes merged | No pointer changes | Merged list complete |