Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

순환 연결 목록에서 최대값과 최소값 노드를 찾는 Python 프로그램

<시간/>

순환 연결 리스트에서 노드의 최대값과 최소값을 구해야 하는 경우에는 'Node' 클래스를 생성해야 합니다. 이 클래스에는 노드에 있는 데이터와 연결 목록의 다음 노드에 대한 액세스라는 두 가지 속성이 있습니다.

순환 연결 리스트에서 머리와 뒤쪽은 서로 인접해 있습니다. 연결되어 원을 이루며 마지막 노드에 'NULL' 값이 없습니다.

초기화 기능이 있는 다른 클래스를 생성해야 하며 노드의 헤드는 'None'으로 초기화됩니다.

연결 리스트에 노드를 추가하고, 노드에서 최소값과 최대값을 찾아 표시하는 여러 가지 방법이 사용자에 의해 정의됩니다.

아래는 동일한 데모입니다 -

예시

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()

출력

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

설명

  • '노드' 클래스가 생성됩니다.
  • 필수 속성이 있는 다른 클래스가 생성됩니다.
  • 순환 연결 목록에 데이터를 추가하는 데 사용되는 'add_data'라는 또 다른 메서드가 정의되어 있습니다.
  • 'find_max_node'라는 또 다른 메서드가 정의되어 있습니다. 이 메서드는 목록을 반복하고 노드에서 최대값을 가져옵니다.
  • 'find_min_node'라는 또 다른 메서드가 정의되어 있습니다. 이 메서드는 목록을 반복하고 노드의 최소값을 가져옵니다.
  • 'list_creation' 클래스의 객체가 생성되고 이에 대한 메소드가 호출되어 데이터를 추가합니다.
  • 순환 연결 목록의 첫 번째와 마지막 노드가 없음으로 '초기화' 메서드가 정의됩니다.
  • 'find_max_node' 메서드와 'find_min_node' 메서드가 호출됩니다.
  • 연결된 목록의 노드를 반복하고 목록의 최대값과 최소값을 가져옵니다.
  • 콘솔에 표시됩니다.