Python中链表的移除元素(Remove Elements)操作

2023-04-11 00:00:00 元素 链表 移除

链表的移除元素操作一般分为两种情况:

  1. 移除头节点:直接将头指针指向第二个节点即可。
  2. 移除非头节点:需要先找到待删除节点的前一个节点,将其 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 的节点。

相关文章