在链表算法里,当操作可能会对链表的头节点产生影响时,使用虚拟头节点往往能简化代码逻辑,避免对头节点进行特殊处理。
- 删除链表节点(头节点可能被删除) 🤔删除一定需要虚拟头节点么?
- 不一定,只有要删除头节点的时候才会,有的删除不会删除头节点
- 比如删除已排序链表中的重复节点(保留一个),就不会删除头节点(因为即使头节点开始重复,因为要保留一个,所以头节点还是会保留,不会被删除)
- 此时就不需要虚拟头节点
- 与此对比的是,如果有重复节点,就都不要了,那么就会删除头节点,就需要虚拟头节点
- 插入节点到链表头部(头节点变化)
- 合并多个有序链表 (头节点可能来自任意一个输入链表)