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

재귀를 사용하여 연결된 목록의 대체 노드를 인쇄하는 Python 프로그램

<시간/>

재귀를 사용하여 연결 리스트의 대체 노드를 출력해야 하는 경우, 연결 리스트에 요소를 추가하는 방법, 연결 리스트의 요소를 표시하는 방법, 연결 리스트의 대체 값을 가져오는 방법은 다음과 같습니다. 한정된. 이전에 정의한 메서드를 호출하여 대체 값을 가져오는 다른 도우미 함수가 사용됩니다.

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

class Node:
   def __init__(self, data):
      self.data = data
      self.next = None

class my_linked_list:
   def __init__(self):
      self.head = None
      self.last_node = None

   def add_value(self, my_data):
      if self.last_node is None:
         self.head = Node(my_data)
         self.last_node = self.head
      else:
         self.last_node.next = Node(my_data)
         self.last_node = self.last_node.next

   def print_it(self):
      curr = self.head
      while curr:
         print(curr.data)
         curr = curr.next

   def alternate_nodes(self):
      self.alternate_helper_fun(self.head)

   def alternate_helper_fun(self, curr):
      if curr is None:
         return
      print(curr.data, end = ' ')
      if curr.next:
         self.alternate_helper_fun(curr.next.next)

my_instance = my_linked_list()
my_list = input("Enter the elements of the linked list :").split()
for elem in my_list:
   my_instance.add_value(elem)
print("The alternate elements in the linked list are :")
my_instance.alternate_nodes()

출력

Enter the elements of the linked list :78 56 34 52 71 96 0 80
The alternate elements in the linked list are :
78 34 71 0

설명

  • '노드' 클래스가 생성됩니다.

  • 필수 속성이 있는 또 다른 'my_linked_list' 클래스가 생성됩니다.

  • 첫 번째 요소, 즉 'head'를 'None'으로, 마지막 노드를 'None'으로 초기화하는 데 사용되는 'init' 기능이 있습니다.

  • 'add_value'라는 또 다른 메서드가 정의되어 있는데, 이 메서드는 연결 목록에 데이터를 추가하는 데 사용됩니다.

  • 목록을 반복하고 요소를 인쇄하는 'print_it'이라는 또 다른 메서드가 정의되어 있습니다.

  • 도우미 함수를 호출하는 데 사용되는 'alternate_nodes'라는 또 다른 메서드가 정의되어 있습니다.

  • 'alternate_helper_fun'이라는 또 다른 도우미 함수가 정의되어 연결 목록을 반복하고 대체 인덱스에 요소를 표시하는 데 사용됩니다.

  • 재귀 함수이므로 계속해서 자신을 호출합니다.

  • 재귀를 사용하기 때문에 'alternate_nodes' 함수를 호출하는 데 사용됩니다.

  • my_linked_list' 클래스의 객체가 생성됩니다.

  • 대체 요소를 표시하기 위해 alternate_nodes 메소드가 호출됩니다.

  • 이 출력은 콘솔에 표시됩니다.