Python Program to Display the Nodes of a Linked List in Reverse using Recursion

PythonServer Side ProgrammingProgramming

When it is required to display the elements/nodes in a linked list in reverse order, using recursion method, a method to add values to the linked list, as well as a method to reverse the elements of a Linked List. It would also have a helper method that uses recursion, i.e calls the helper function again and again to compute values.

Below is a demonstration for the same −

Example

 Live Demo

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

Output

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

Explanation

  • The ‘Node’ class is created.

  • Another ‘my_linked_list’ class with required attributes is created.

  • It has an ‘init’ function that is used to initialize the first element, i.e the ‘head’ to ‘None’ and last node to ‘None’.

  • Another method named ‘add_value’ is defined, that is used to add data to the linked list.

  • Another method named ‘reverse_display’ is defined that is used to display the linked list data in reverse order on the console.

  • Another helper function is defined, since recursion needs to be used here.

  • The ‘reverse_display’ is called in the helper function.

  • An object of the ‘my_linked_list’ class is created.

  • The user input is taken for the number of elements in the linked list.

  • The elements are added to the list.

  • This range is iterated over, and the methods are called on it to add data.

  • The element to be searched is taken as user input, and it is searched for.

  • The index of this element, if found, is displayed on the console.

raja
Published on 14-Apr-2021 12:55:33
Advertisements