Python中链表的删除指定值的节点操作

2023-04-11 00:00:00 指定 节点 链表

链表删除指定值的节点操作可以通过遍历链表查找到要删除的节点,然后将该节点的前一个节点的next指针指向该节点的下一个节点即可实现删除操作。

下面是Python中链表删除指定值的节点操作的代码演示:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

class Solution:
    def deleteNode(self, head: ListNode, val: int) -> ListNode:
        dummy = ListNode(0, head)
        prev, curr = dummy, head
        while curr:
            if curr.val == val:
                prev.next = curr.next
                break
            prev, curr = curr, curr.next
        return dummy.next

这里假设链表头结点是head,要删除的值是val。我们可以先创建一个dummy节点作为头部,因为链表的头可能需要被删除。用prev和curr指向dummy和head。然后从头开始遍历整个链表。如果当前节点的值等于要删除的值,就通过prev和curr连接下一个节点来删除当前节点。最后返回dummy.next即可得到删除后的链表。

代码演示:

# 创建链表1 -> 2 -> 3 -> 4 -> 5
head = ListNode(1, ListNode(2, ListNode(3, ListNode(4, ListNode(5)))))

# 删除链表中值为3的节点
s = Solution()
res = s.deleteNode(head, 3)

# 输出删除节点后的链表
while res:
    print(res.val, end=' -> ')
    res = res.next
print('None')

输出结果:

1 -> 2 -> 4 -> 5 -> None

相关文章