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 reverse_display(self):
      self.helper_reverse_display(self.head)

   def helper_reverse_display(self, curr):
      if curr is None:
         return

      self.helper_reverse_display(curr.next)
      print(curr.data)

my_instance = my_linked_list()
n = int(input('How many elements you wish to add ? '))
for i in range(n):
   data = int(input('Enter the data item : '))
   my_instance.add_value(data)

print('The reversed linked list is: ')
my_instance.reverse_display()

출력

How many elements you wish to add ? 4
Enter the data item : 21
Enter the data item : 34
Enter the data item : 56
Enter the data item : 68
The reversed linked list is:
68
56
34
21

설명

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

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

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

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

  • 콘솔에 연결 리스트 데이터를 역순으로 표시하는 데 사용되는 'reverse_display'라는 또 다른 메서드가 정의되어 있습니다.

  • 여기서 재귀를 사용해야 하므로 다른 도우미 함수가 정의됩니다.

  • 도우미 함수에서 'reverse_display'가 호출됩니다.

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

  • 연결 목록의 요소 수만큼 사용자 입력을 받습니다.

  • 요소가 목록에 추가됩니다.

  • 이 범위는 반복되고 데이터를 추가하기 위해 메서드가 호출됩니다.

  • 검색할 요소를 사용자 입력으로 받아 검색합니다.

  • 이 요소의 색인이 있는 경우 콘솔에 표시됩니다.