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
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.