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
Get step-by-step solutions from verified subject matter experts
