用python 删除链表中等于给定值 val 的所有节点。
时间: 2024-09-18 21:18:14 浏览: 28
python-leetcode面试题解之两两交换链表中的节点.zip
在Python中,如果你有一个单向链表,并想要删除其中所有值等于特定值 `val` 的节点,可以创建一个新的空链表,然后遍历原始链表。对于每个节点,如果其值不是 `val`,就将其添加到新链表中。这里是一个简单的示例:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def remove_nodes(head, val):
if not head:
return None
new_head = ListNode(0) # 创建新链表的头
current = head
while current:
if current.val != val: # 如果当前节点值不等于 val,则添加到新链表
new_head.next = current
new_head = new_head.next
current = current.next
# 连接新链表的头和尾部
new_head.next = None
return new_head.next # 返回新链表的头节点
# 示例
head = ListNode(1, ListNode(2, ListNode(6, ListNode(3, ListNode(4)))))
new_head = remove_nodes(head, 3)
```
在这个例子中,函数 `remove_nodes` 接受链表的头节点 `head` 和要移除的值 `val`,返回一个新的链表,其中不包含值为 `val` 的节点。
阅读全文