Python Program to Count the Number of Occurrences of an Element in the Linked List using Recursion

PythonServer Side ProgrammingProgramming

When it is required to count the number of occurrence of a specific element of a linked list with the help of recursion, a method to add elements to the linked list, a method to print the elements of the linked list, and a method to count the occurrence of an element in the linked list is defined. A helper function is defined, since recursion is being used. This helper function calls the previously defined occurrence counting function.

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 print_it(self):
      curr = self.head
      while curr:
         print(curr.data)
         curr = curr.next

   def count_val(self, key):
      return self.count_helper_fun(self.head, key)

   def count_helper_fun(self, curr, key):
      if curr is None:
         return 0

      if curr.data == key:
         return 1 + self.count_helper_fun(curr.next, key)
      else:
         return self.count_helper_fun(curr.next, key)

my_instance = my_linked_list()
my_list = [56, 43, 70, 67, 89, 91, 70, 23, 46, 70]
for elem in my_list:
   my_instance.add_value(elem)
print("The linked list contains the below elements:")
my_instance.print_it()

key_val = int(input('Enter the data item: '))
count_val = my_instance.count_val(key_val)
print('{0} occurs {1} time(s) in the list.'.format(key_val, count_val))

Output

The linked list contains the below elements:
56
43
70
67
89
91
70
23
46
70
Enter the data item: 70

70 occurs 3 time(s) in the list.

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 ‘print_it’ is defined, that iterates over the list, and prints the elements.

  • Another method named ‘count_val’ is defined that is used to call the helper function.

  • Another helper function, named ‘count_helper_fun’ is defined, that helps determine the frequency of occurrence of a specific element in the linked list.

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

  • The count_val method is called, to find the frequency of a specific element.

  • This output is displayed on the console.

raja
Published on 14-Apr-2021 13:10:21
Advertisements