📅  最后修改于: 2023-12-03 15:27:10.203000             🧑  作者: Mango
在链表中,重复项可能会影响查询和其他操作的效率。因此,我们需要一个程序来删除链表中的重复项。这个Python程序能够很好地进行这项工作,可以用于从未排序的链表中删除重复项。
该程序的思路如下:
以下是我们的Python实现:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def deleteDuplicates(head: ListNode) -> ListNode:
# 遍历链表,将链表中的每个元素存储在列表中
val_list = []
node = head
while node != None:
val_list.append(node.val)
node = node.next
# 创建新链表,将每个元素从列表中添加到新链表中,同时跳过重复的元素
new_head = ListNode(-1)
node = new_head
for val in val_list:
if val_list.count(val) == 1:
node.next = ListNode(val)
node = node.next
return new_head.next
这个程序使用了一个新的链表,我们遍历原链表将每个元素添加到列表中。然后,我们创建一个新链表,并将列表中的每个元素添加到新链表中,同时跳过重复的元素。
以下是一个测试样例:
node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(2)
node5 = ListNode(1)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
new_head = deleteDuplicates(node1)
node = new_head
while node != None:
print(node.val)
node = node.next
该测试样例删除了节点2和节点1。输出结果如下:
3
这个Python程序可以有效地从未排序的链表中删除重复项。它使用了一个新的链表,编写简单,易于理解和实现。