| 1 | Create new interval | null | [4, 9] | newNode=null | [1,3] -> [6,7] -> [8,10] -> [12,16] -> null |
| 2 | Start at head | [1,3] | [4,9] | current=[1,3] | [1,3] -> [6,7] -> [8,10] -> [12,16] -> null |
| 3 | Check if new interval before current | [1,3] | [4,9] | No | [1,3] -> [6,7] -> [8,10] -> [12,16] -> null |
| 4 | Move to next node | [6,7] | [4,9] | current=[6,7] | [1,3] -> [6,7] -> [8,10] -> [12,16] -> null |
| 5 | Check overlap with current | [6,7] | [4,9] | Yes, merge | [1,3] -> [4,9] (merged) -> [8,10] -> [12,16] -> null |
| 6 | Merge intervals | [4,9] | [4,9] | newInterval=[4,9] | [1,3] -> [4,9] -> [8,10] -> [12,16] -> null |
| 7 | Move to next node | [8,10] | [4,9] | current=[8,10] | [1,3] -> [4,9] -> [8,10] -> [12,16] -> null |
| 8 | Check overlap with current | [8,10] | [4,9] | Yes, merge | [1,3] -> [4,10] (merged) -> [12,16] -> null |
| 9 | Merge intervals | [4,10] | [4,10] | newInterval=[4,10] | [1,3] -> [4,10] -> [12,16] -> null |
| 10 | Move to next node | [12,16] | [4,10] | current=[12,16] | [1,3] -> [4,10] -> [12,16] -> null |
| 11 | Check overlap with current | [12,16] | [4,10] | No | [1,3] -> [4,10] -> [12,16] -> null |
| 12 | Insert new interval before current | [12,16] | [4,10] | newInterval.next = current | [1,3] -> [4,10] -> [12,16] -> null |
| 13 | Adjust previous node's next | [4,10] | [4,10] | previous.next = newInterval | [1,3] -> [4,10] -> [12,16] -> null |
| 14 | Done | null | null | List updated | [1,3] -> [4,10] -> [12,16] -> null |