删除链表中等于给定值val的所有节点
时间: 2024-09-19 08:02:47 浏览: 19
在链表中删除所有等于给定值 `val` 的节点,你可以按照下面的步骤操作:
1. 定义两个指针,`prev` 用于保存当前节点的前一个节点,`current` 用于遍历链表。
2. 初始化 `prev` 为 `None`,`current` 为链表的头节点。
3. 遍历链表:
a. 如果 `current` 的值等于 `val`,这意味着找到了需要删除的节点:
- 如果这是第一个节点(`prev` 为 `None`),直接更新头节点为 `current.next`。
- 否则,将 `prev` 的下一个节点设置为 `current.next`,跳过这个节点。
b. 把 `current` 指向下一个节点,即 `current = current.next`。
c. 更新 `prev` 为当前节点,因为可能需要在其后删除节点。
4. 遍历完成后,链表就只剩下不等于 `val` 的节点了。
这是一个简单的伪代码实现:
```python
def remove_elements_with_value(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
```