Question: Python 3: Write a LinkedList class that has recursive implementations of the add, display, remove, contains, insert and reverse methods. You may use default arguments

Python 3:

Write a LinkedList class that has recursive implementations of the add, display, remove, contains, insert and reverse methods. You may use default arguments and/or helper functions.

class Node: """ Represents a node in a linked list """ def __init__(self, data): self.data = data self.next = None class LinkedList: """ A linked list implementation of the List ADT """ def __init__(self): self.head = None def add(self, val): """ Adds a node containing val to the linked list """ if self.head is None: # If the list is empty self.head = Node(val) else: current = self.head while current.next is not None: current = current.next current.next = Node(val) def display(self): """ Prints out the values in the linked list """ current = self.head while current is not None: print(current.data, end=" ") current = current.next print() def remove(self, val): """ Removes the node containing val from the linked list """ if self.head is None: # If the list is empty return if self.head.data == val: # If the node to remove is the head self.head = self.head.next else: current = self.head while current is not None and current.data != val: previous = current current = current.next if current is not None: # If we found the value in the list previous.next = current.next def is_empty(self): """ Returns True if the linked list is empty, returns False otherwise """ return self.head is None def contains(self, key): if self.head is None: # If the list is empty return False current = self.head while current is not None: if current.data == key: return True current = current.next return False def insert(self, val, pos): if pos == 0: temp = self.head print("val:", self.head.data) self.head = Node(val) self.head.next = temp else: current = self.head counter = 0 for _ in range(pos - 1): if current.next is None: current.next = Node(val) return current = current.next temp = current.next current.next = Node(val) current.next.next = temp def reverse(self): prev = None curr = self.head while curr is not None: n = curr.next curr.next = prev prev = curr curr = n self.head = prev

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!