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

이중 연결 목록에서 중복 요소를 제거하는 Python 프로그램

<시간/>

이중 연결 목록에서 중복 요소를 제거해야 하는 경우 '노드' 클래스를 생성해야 합니다. 이 클래스에는 노드에 있는 데이터, 연결 목록의 다음 노드에 대한 액세스, 연결 목록의 이전 노드에 대한 액세스의 세 가지 속성이 있습니다.

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

class Node:def __init__(self, my_data):self.previous =None self.data =my_data self.next =Noneclass double_list:def __init__(self):self.head =None self.tail =None 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 print_it(self):curr =self.head if (self.head ==None):print("목록이 비어 있습니다. ") return print("이중 연결 목록의 노드는 :") while curr !=없음:print(curr.data) curr =curr.next def remove_duplicates(self):if(self.head ==None):return else:curr =self.head; while(curr !=없음):index_val =curr.next while(index_val !=없음):if(curr.data ==index_val.data):temp =index_val index_val.previous.next =index_val.next if(index_val.next !=없음):index_val.next.previous =index_val.previous temp =없음 index_val =index_val.next 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(24)my_instance.print_it()print("중복 제거 후 목록의 요소는 다음과 같습니다. ")my_instance.remove_duplicates() my_instance.print_it()

출력

이중 연결 목록에 추가되는 요소 이중 연결 목록의 노드는 다음과 같습니다.1024547724중복을 제거한 후 목록의 요소는 다음과 같습니다.이중 연결 목록의 노드는 다음과 같습니다. 

설명

  • '노드' 클래스가 생성됩니다.
  • 필수 속성이 있는 다른 클래스가 생성됩니다.
  • 연결 목록에 있는 중복 요소를 제거하는 데 사용되는 'remove_duplicates'라는 또 다른 메서드가 정의되어 있습니다.
  • 순환 연결 목록의 노드를 표시하는 'print_it'이라는 또 다른 메서드가 정의되어 있습니다.
  • 'double_list' 클래스의 객체가 생성되고 이에 대한 메소드가 호출되어 데이터를 추가합니다.
  • 순환 연결 목록의 첫 번째와 마지막 노드가 없음으로 '초기화' 메서드가 정의됩니다.
  • 'remove_duplicates' 메소드가 호출됩니다.
  • 목록을 반복하고 요소가 반복되었는지 확인합니다.
  • 사실이면 삭제됩니다.
  • 'print_it' 메소드를 사용하여 콘솔에 표시됩니다.