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

Chương trình Python để tìm nút giá trị lớn nhất và nhỏ nhất từ ​​danh sách liên kết hình tròn

Khi cần tìm giá trị nút tối đa và tối thiểu từ 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, tìm các giá trị tối thiểu và tối đa trong các nút và hiển thị chúng.

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 find_min_node(self):  
      curr = self.head;  
      min_val = self.head.data;  
      if(self.head == None):  
         print("The list is empty");  
      else:  
         while(True):  
            if(min_val > curr.data):  
               min_val = curr.data;  
            curr= curr.next;  
            if(curr == self.head):  
               break;  
      print("Minimum value node in the list: "+ str(min_val));  
   
   def find_max_node(self):  
      curr = self.head;  
      max_val = self.head.data;  
      if(self.head == None):  
         print("List is empty");  
      else:  
         while(True):  
            if(max_val < curr.data):  
               max_val = curr.data;  
            curr= curr.next;  
            if(curr == self.head):  
               break;  
      print("The maximum valueed node is : "+ str(max_val));
   
class circular_linked_list:  
   my_cl = list_creation()
   print("Values have been added to the list")
   my_cl.add_data(11)  
   my_cl.add_data(52)  
   my_cl.add_data(36)  
   my_cl.add_data(74)  
   my_cl.find_max_node()
   my_cl.find_min_node()

Đầu ra

Values have been added to the list
The maximum valueed node is : 74
Minimum value node in the list: 11

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 '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 'find_max_node' được xác định, phương thức này sẽ lặp lại qua danh sách và nhận giá trị lớn nhất trong một nút.
  • Một phương thức khác có tên 'find_min_node' được xác định, phương thức này sẽ lặp lại qua danh sách và nhận giá trị nhỏ nhất trong một nút.
  • 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 được liên kết vòng tròn thành Không.
  • Phương thức 'find_max_node' và phương thức 'find_min_node' được gọi.
  • Nó lặp lại qua các nút trong danh sách được liên kết, nhận giá trị lớn nhất và nhỏ nhất trong danh sách.
  • Điều này được hiển thị trên bảng điều khiển.