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

Chương trình Python để loại bỏ các phần tử trùng lặp khỏi Danh sách được Liên kết Thông tư

Khi được yêu cầu xóa các bản sao khỏi danh sách liên kết vòng tròn, lớp 'Nút' cần được tạo. Trong lớp này, có hai thuộc tính, dữ liệu có trong nút và quyền truy cập vào nút tiếp theo của danh sách được liên kết.

Trong danh sách liên kết hình tròn, phần đầu và phần sau nằm liền kề nhau. Chúng được kết nối để tạo thành một vòng kết nối và không có giá trị 'NULL' trong nút cuối cùng.

Một lớp khác cần được tạo sẽ có chức năng khởi tạo và phần đầu của nút sẽ được khởi tạo thành 'Không có'.

Người dùng xác định nhiều phương thức để thêm nút vào danh sách được liên kết, xóa các bản sao và in các giá trị của nút.

Dưới đây là một minh chứng cho điều tương tự -

Ví dụ

class Node:  
   def __init__(self,data):
      self.data = data
      self.next = None  

class list_creation:  
   def __init__(self):  
      self.head = Node(None)  
      self.tail = Node(None)  
      self.head.next = self.tail  
      self.tail.next = self.head  

   def add_data(self,my_data):  
      new_node = Node(my_data)
      if self.head.data is None:  
         self.head = new_node  
         self.tail = new_node  
         new_node.next = self.head  
      else:  
         self.tail.next = new_node
         self.tail = new_node
         self.tail.next = self.head

   def remove_duplicate_vals(self):  
      curr = self.head
      if(self.head == None):
         print("The list is empty")
      else:
         while(True):
            temp = curr
            index_val = curr.next
            while(index_val != self.head):
               if(curr.data == index_val.data):
                  temp.next = index_val.next
                else:
                  temp = index_val
             index_val= index_val.next
            curr =curr.next
            if(curr.next == self.head):
               break;        
   def print_it(self):  
      curr = self.head
      if self.head is None:  
         print("The list is empty");  
         return;  
      else:
         print(curr.data)
         while(curr.next != self.head):  
            curr = curr.next
            print(curr.data)
         print("\n")

class circular_linked_list:  
   my_cl = list_creation()
   print("Nodes are being added to the list")
   my_cl.add_data(21)
   my_cl.add_data(54)
   my_cl.add_data(78)
   my_cl.add_data(99)
   my_cl.add_data(21)
   print("The list is :")
   my_cl.print_it();  
   my_cl.remove_duplicate_vals()
   print("The updated list is :")
   my_cl.print_it(); 

Đầu ra

Nodes are being added to the list
The list is :
21
54
78
99
21

The updated list is :
21
54
78
99

Giải thích

  • Lớp 'Node' đã được tạo.
  • Một lớp khác với các thuộc tính bắt buộc được tạo.
  • Một phương pháp khác có tên 'remove_duplicate_vals' được xác định, được sử dụng để xóa các phần tử trùng lặp có trong danh sách được liên kết.
  • Một phương thức khác có tên 'print_it' được xác định, phương thức này hiển thị các nút của danh sách liên kết vòng tròn.
  • Một đối tượng của lớp 'list_creation' được tạo và các phương thức được gọi trên đó để thêm dữ liệu.
  • Phương thức 'init' được xác định, rằng nút đầu tiên và nút cuối cùng của danh sách liên kết vòng tròn thành Không có.
  • Phương thức 'remove_duplicate_vals' được gọi.
  • Nó lặp lại danh sách và kiểm tra xem có phần tử nào được lặp lại hay không.
  • Nếu điều đó là đúng, thì nó sẽ bị xóa.
  • Điều này được hiển thị trên bảng điều khiển bằng phương thức 'print_it'.