diff --git a/data_structures/linked_list/sorted_linked_list.py b/data_structures/linked_list/sorted_linked_list.py index de47f5b48..89e9a6c59 100644 --- a/data_structures/linked_list/sorted_linked_list.py +++ b/data_structures/linked_list/sorted_linked_list.py @@ -3,25 +3,27 @@ from __future__ import annotations from dataclasses import dataclass """ -This is a sorted linked list class that -creates a sorted linked list of integer datatype +This is a sorted linked list class that +creates a sorted linked list of integer datatype """ + @dataclass class Node: def __init__(self, data): self.data: int = data self.next_node: Node | None = None - + def __repr__(self): return f"Node({self.data}, {self.next_node})" - -class SortedLinkedList: + + +class SortedLinedList: def __init__(self): - self.numNodes : int = 0 + self.numNodes: int = 0 self.head: Node | None = None self.tail: Node | None = None - + def __repr__(self): nodes = [] temp = self.head @@ -29,12 +31,12 @@ class SortedLinkedList: nodes.append(str(temp.data)) temp = temp.next_node return f"SortedLinkedList({', '.join(nodes)})" - + def insert(self, data: int): """This Function inserts node in it's sorted position - This function can be re written for any data type but + This function can be re written for any data type but the comparator her must have to be changed - + Args: data (int): the data of linked list """ @@ -54,21 +56,20 @@ class SortedLinkedList: if new_node.next_node is None: self.tail = new_node self.numNodes += 1 - + def display(self): - """This function displays whole list - """ - temp=self.head + """This function displays whole list""" + temp = self.head while temp: - print(temp.data,end=" ") - temp=temp.next_node + print(temp.data, end=" ") + temp = temp.next_node print() - + def delete(self, data: int) -> bool: - """This Function deletes first appearance of node with - data from it's sorted position - - This function can be re written for any data type but + """This Function deletes first appearance of node with + data from it's sorted position + + This function can be re written for any data type but the comparator her must have to be changed Args: @@ -96,9 +97,9 @@ class SortedLinkedList: temp_node = temp_node.next_node return False - + def search(self, data: int) -> bool: - """This function searches the data given input from user + """This function searches the data given input from user and return whether the data exists or not Args: @@ -113,6 +114,7 @@ class SortedLinkedList: return True temp = temp.next_node return False + def is_empty(self) -> bool: """This function will check whether the list is empty or not @@ -120,8 +122,8 @@ class SortedLinkedList: bool: flag indicating whether list is empty or not """ return self.head is None - - def length (self) -> int: + + def length(self) -> int: """This function returns the length of the linked list @@ -129,7 +131,7 @@ class SortedLinkedList: int: The length of linked list """ return numNodes - + def min_value(self) -> int | None: """This function will return minimum value @@ -139,7 +141,7 @@ class SortedLinkedList: if self.head is None: return None return self.head.data - + def max_value(self) -> int | None: """This function will return maximum value @@ -150,20 +152,18 @@ class SortedLinkedList: if self.tail is None: return None return self.tail.data - + def remove_duplicates(self): - """This Function will remove the duplicates from the list - """ + """This Function will remove the duplicates from the list""" temp = self.head while temp and temp.next_node: if temp.data == temp.next_node.data: temp.next_node = temp.next_node.next_node else: temp = temp.next_node - + def reverse(self): - """This function will reveres the list - """ + """This function will reveres the list""" prev = None current = self.head while current: @@ -187,36 +187,30 @@ class SortedLinkedList: return self.tail.next_node = other_list.head self.tail = other_list.tail - + if __name__ == "__main__": - linked_list=SortedLinkedList() + linkedList = SortedLinedList() while True: print("Enter") print("1. Insert") print("2. Display") print("3. Delete") print("4. Exit") - choice= input("Enter your choice: ") - - if choice == '1': + choice = input("Enter your choice: ") + + if choice == "1": data = int(input("Enter a number: ")) - linked_list.insert(data) - elif choice == '2': - linked_list.display() - elif choice == '3': + linkedList.insert(data) + elif choice == "2": + linkedList.display() + elif choice == "3": data = int(input("Enter the data to delete: ")) if linked_list.delete(data): print(f"Node with data {data} deleted successfully") else: - print(f"Node with data {data} not found in the list") - elif choice == '4': + print("Node with data {} not found in the list".format(data)) + elif choice == "4": break else: print("Wrong input") - - - - - - \ No newline at end of file