Python中链表的删除排序链表中的重复元素

2023-04-11 00:00:00 元素 排序 链表

链表删除排序链表中的重复元素可以通过遍历链表,判断相邻节点的值是否相同,如果相同,则删除其中一个节点,继续遍历下一个节点,直到遍历完整个链表。实现的代码如下:

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

def deleteDuplicates(head: ListNode) -> ListNode:
    if not head:
        return head

    cur = head
    while cur.next:
        if cur.val == cur.next.val:
            cur.next = cur.next.next
        else:
            cur = cur.next
    return head

为了演示该函数的使用,我们可以创建一个链表,并输出删除重复节点后的链表:

head = ListNode(1)
node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(2)
node4 = ListNode(3)

head.next = node1
node1.next = node2
node2.next = node3
node3.next = node4

new_head = deleteDuplicates(head)

while new_head:
    print(new_head.val)
    new_head = new_head.next

输出结果为:

1
2
3

可见,重复的节点已被删除,链表顺序保持不变。

相关文章