Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình xóa các mục nhập trùng lặp trong danh sách được liên kết bằng Python

Giả sử chúng ta có một danh sách liên kết các số, chúng ta phải loại bỏ những số xuất hiện nhiều lần trong danh sách liên kết (chỉ giữ một lần xuất hiện trong đầu ra), chúng ta cũng phải duy trì thứ tự xuất hiện trong danh sách liên kết ban đầu.

Vì vậy, nếu đầu vào là [2 -> 4 -> 6 -> 1 -> 4 -> 6 -> 9], thì đầu ra sẽ là [2 -> 4 -> 6 -> 1 -> 9].

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • nếu nút không rỗng, thì
    • l:=một tập hợp mới
    • temp:=node
    • chèn giá trị của nhiệt độ vào l
    • trong khi tiếp theo của tạm thời không null, hãy thực hiện
      • nếu giá trị tiếp theo của tạm thời không bằng l, thì
        • chèn giá trị tiếp theo của nhiệt độ vào l
        • temp:=tiếp theo của temp
      • nếu không,
        • next of temp:=next of next of temp
  • nút trả lại

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

class ListNode:
   def __init__(self, data, next = None):
      self.val = data
      self.next = next
def make_list(elements):
   head = ListNode(elements[0])
   for element in elements[1:]:
      ptr = head
      while ptr.next:
         ptr = ptr.next
      ptr.next = ListNode(element)
   return head
def print_list(head):
   ptr = head
   print('[', end = "")
   while ptr:
      print(ptr.val, end = ", ")
      ptr = ptr.next
      print(']')
class Solution:
   def solve(self, node):
      if node:
         l = set()
         temp = node
         l.add(temp.val)
         while temp.next:
            if temp.next.val not in l: l.add(temp.next.val)
               temp = temp.next
            else:
               temp.next = temp.next.next
         return node
ob = Solution()
head = make_list([2, 4, 6, 1, 4, 6, 9])
print_list(ob.solve(head))

Đầu vào

[2, 4, 6, 1, 4, 6, 9]

Đầu ra

[2, 4, 6, 1, 9, ]