Python中链表的移除元素(Remove Elements)操作
链表的移除元素操作一般分为两种情况:
- 移除头节点:直接将头指针指向第二个节点即可。
- 移除非头节点:需要先找到待删除节点的前一个节点,将其 next 指针指向待删除节点的下一个节点,再将待删除节点删除即可。
下面是一个简单的 Python 代码演示:
class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def remove_elements(head: ListNode, val: int) -> ListNode: # 处理头节点直接等于值的情况 while head and head.val == val: head = head.next # 处理不存在头节点或头节点不等于值的情况 if not head: return None # 处理非头节点的情况 prev, curr = head, head.next while curr: if curr.val == val: prev.next = curr.next else: prev = curr curr = curr.next return head
可以测试一下这个函数,比如移除链表中的所有值为 2 的节点:
# 构造一个链表 head = ListNode(1, ListNode(2, ListNode(3, ListNode(2, ListNode(4))))) # 执行移除操作 head = remove_elements(head, 2) # 打印移除后的链表 while head: print(head.val, end=' ') head = head.next # Output: 1 3 4
此时可以看到,移除掉值为 2 的节点后,链表中只剩下了值为 1、3 和 4 的节点。
相关文章