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

Chương trình Python để xóa một nút khỏi phần cuối của Danh sách được liên kết theo vòng tròn

Khi được yêu cầu xóa một nút khỏi cuối danh sách liên kết vòng tròn, một 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 'linked_list' 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ó'.

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

Ví dụ

Node lớp
class Node:  
   def __init__(self,data):  
      self.data = data;  
      self.next = None;  
   
class linked_list:  
   def __init__(self):  
      self.head = Node(None);  
      self.tail = Node(None);  
      self.head.next = self.tail;  
      self.tail.next = self.head;  
     
   def add_value(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 delete_from_end(self):  
      if(self.head == None):  
         return;  
      else:  
         if(self.head != self.tail ):  
            curr = self.head;              
            while(curr.next != self.tail):  
               curr = curr.next;  
            self.tail = curr;  
            self.tail.next = self.head;  
         
         else:  
            self.head = self.tail = None;  
           
   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_list:  
   my_cl = linked_list();  
   my_cl.add_value(11);  
   my_cl.add_value(32);  
   my_cl.add_value(43);  
   my_cl.add_value(57);  

   print("The original list is :");  
   my_cl.print_it();  
   while(my_cl.head != None):  
      my_cl.delete_from_end();  
      print("The list after deletion is :");  
      my_cl.print_it();   

Đầu ra

The original list is :
11
32
43
57
The list after deletion is :
11
32
43
The list after deletion is :
11
32
The list after deletion is :
11
The list after deletion is :
The list is empty

Giải thích

  • Lớp 'Node' đã được tạo.
  • Một lớp 'linked_list' 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 'add_data' được xác định, được sử dụng để thêm dữ liệu vào danh sách liên kết vòng tròn.
  • Một phương thức khác có tên 'delete_from_end' được xác định, phương thức này sẽ xóa từng phần tử một khỏi phần cuối bằng cách xóa tham chiếu của nó.
  • Một phương thức khác có tên 'print_it' được xác định dùng để hiển thị dữ liệu danh sách liên kết trên bảng điều khiển.
  • Một đối tượng của lớp 'linked_list' được tạo và các phương thức được gọi trên đó để thêm dữ liệu.
  • Điều này được hiển thị trên bảng điều khiển bằng phương thức 'print_it'.