이중 연결 목록에서 최대값과 최소값을 찾아야 하는 경우 'Node' 클래스를 생성해야 합니다. 이 클래스에는 노드에 있는 데이터, 연결 목록의 다음 노드에 대한 액세스, 연결 목록의 이전 노드에 대한 액세스의 세 가지 속성이 있습니다.
아래는 동일한 데모입니다 -
예시
class 노드:def __init__(self, my_data):self.prev =없음 self.data =my_data self.next =Noneclass double_list:def __init__(self):self.head =없음 self.tail =없음 def add_data( self, my_data):new_node =Node(my_data) if(self.head ==없음):self.head =self.tail =new_node self.head.previous =없음 self.tail.next =없음 else:self.tail. next =new_node new_node.previous =self.tail self.tail =new_node self.tail.next =없음 def min_node(self):curr =self.head if(self.head ==None):print("목록이 비어 있습니다. ") return 0 else:min =self.head.data while(curr !=None):if(min> curr.data):min =curr.data curr =curr.next return min def max_node(self):curr =self.head if(self.head ==None):print("목록이 비어 있습니다") return 0 else:max =self.head.da ta while(curr !=None):if(curr.data> max):max =curr.data curr =curr.next return max def print_it(self):curr =self.head if (self.head ==None) :print("목록이 비어 있습니다.") return print("이중 연결 목록의 노드는 :") while curr !=없음:print(curr.data) curr =curr.nextmy_instance =double_list()print("요소 이중 연결 목록에 추가 중입니다.")my_instance.add_data(10)my_instance.add_data(24)my_instance.add_data(54)my_instance.add_data(77)my_instance.add_data(92)my_instance.print_it()print("노드 최대값은 ")print(my_instance.max_node())print("최소값이 있는 노드는 다음과 같습니다. ")print(my_instance.min_node())
출력
이중 연결 목록에 요소가 추가되고 있습니다.이중 연결 목록의 노드는 다음과 같습니다.1024547792최대 값이 있는 노드는설명
- '노드' 클래스가 생성됩니다.
- 필수 속성이 있는 다른 클래스가 생성됩니다.
- 이중 연결 목록에 데이터를 추가하는 데 사용되는 'add_data'라는 메서드가 정의되어 있습니다.
- 순환 연결 목록의 노드를 표시하는 'print_it'이라는 또 다른 메서드가 정의되어 있습니다.
- 이중 연결 목록에서 최대값을 찾는 'max_node'라는 또 다른 메서드가 정의되어 있습니다.
- 이중 연결 목록에서 최소값을 검색하는 'min_node'라는 또 다른 메서드가 정의되어 있습니다.
- 'double_list' 클래스의 객체가 생성되고 이중 연결 리스트에서 노드의 최소값과 최대값을 찾기 위해 메소드가 호출됩니다.
- 이중 연결 리스트의 루트, 헤드, 테일 노드를 None으로 하는 'init' 메소드가 정의되어 있습니다.
- 목록을 반복하고 최대값과 최소값을 찾습니다.
- 'print_it' 메소드를 사용하여 콘솔에 표시됩니다.