From 5649ab3ac8423e1e281995732342783a8fa1620e Mon Sep 17 00:00:00 2001 From: NIKITA PANDEY <113332472+nikitapandeyy@users.noreply.github.com> Date: Thu, 23 Mar 2023 21:44:34 +0530 Subject: [PATCH] Update LinkedList0.py In the find method, the function is returning the data instead of the node that contains the data. This can be problematic if the data appears multiple times in the linked list, as it will only return the first occurrence. The method should return the node that contains the data, or None if the data is not found. In the remove method, if the data is not found in the linked list, the method returns False. This is not an ideal way to handle the situation, as it could lead to confusion if the user thinks that the data has been removed when it has not. It would be better to raise an exception, such as a ValueError, to indicate that the data is not in the linked list. --- LinkedLists/LinkedList0.py | 59 +++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/LinkedLists/LinkedList0.py b/LinkedLists/LinkedList0.py index 19e30946..31450f5b 100644 --- a/LinkedLists/LinkedList0.py +++ b/LinkedLists/LinkedList0.py @@ -1,69 +1,70 @@ -class Node(object): +class Node: + def __init__(self, data, next_node=None): + self.data = data + self.next_node = next_node - def __init__ (self, d, n = None): - self.data = d - self.next_node = n - - def get_next (self): + def get_next(self): return self.next_node - def set_next (self, n): - self.next_node = n + def set_next(self, next_node): + self.next_node = next_node - def get_data (self): + def get_data(self): return self.data - def set_data (self, d): - self.data = d - + def set_data(self, data): + self.data = data -class LinkedList (object): - def __init__(self, r = None): - self.root = r +class LinkedList: + def __init__(self, root=None): + self.root = root self.size = 0 - def get_size (self): + def get_size(self): return self.size - def add (self, d): - new_node = Node (d, self.root) + def add(self, data): + new_node = Node(data, self.root) self.root = new_node self.size += 1 - def remove (self, d): + def remove(self, data): this_node = self.root prev_node = None while this_node: - if this_node.get_data() == d: + if this_node.get_data() == data: if prev_node: prev_node.set_next(this_node.get_next()) else: self.root = this_node.get_next() self.size -= 1 - return True # data removed + return True else: prev_node = this_node this_node = this_node.get_next() - return False # data not found - def find (self, d): + # Raise an exception if the data is not found + raise ValueError(f"{data} not found in the list.") + + def find(self, data): this_node = self.root while this_node: - if this_node.get_data() == d: - return d + if this_node.get_data() == data: + return this_node else: this_node = this_node.get_next() return None + myList = LinkedList() myList.add(5) myList.add(8) myList.add(12) -print("size="+str(myList.get_size())) +print("size = " + str(myList.get_size())) myList.remove(8) -print("size="+str(myList.get_size())) +print("size = " + str(myList.get_size())) print(myList.remove(12)) -print("size="+str(myList.get_size())) -print(myList.find(5)) \ No newline at end of file +print("size = " + str(myList.get_size())) +print(myList.find(5).get_data())