删除链表中等于给定值 val 的所有节点 给你一个链表的头节点 head 和一个整数 val!,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 示例 1: 输入:head=[1,2,6,3,4,5,6],val=6 输出:[1,2,3,4,5]
时间: 2024-09-18 10:05:30 浏览: 57
PHP获取链表中倒数第K个节点的方法
删除链表中等于给定值 `val` 的所有节点是一个常见的链表操作问题。你可以通过迭代或递归的方式解决这个问题。以下是使用迭代的一个基本步骤:
1. 定义两个指针,一个 `prev` 指向当前节点前一个节点,一个 `current` 初始指向头节点 `head`。
2. 遍历链表:
- 如果 `current` 节点的值等于 `val`,则更新 `prev` 的 next 指针,使其跳过当前节点,因为下一个节点应该是下一个有效节点。
- 否则,将 `prev` 和 `current` 都向前移动一步,继续检查下一个节点。
3. 遍历结束后,`prev` 指向的就是新链表的头节点。
Python伪代码示例:
```python
def delete_nodes(head, val):
if not head:
return None
prev = None
current = head
while current:
if current.val == val:
if not prev:
head = current.next
else:
prev.next = current.next
else:
prev = current
current = current.next
return head
```
阅读全文