From 58fec4ac63a1a23ca61929279bd46767abf42ba4 Mon Sep 17 00:00:00 2001 From: Eaglemanpython Date: Tue, 28 Dec 2021 21:35:03 -0600 Subject: [PATCH] Create Singlylinkedlist This is a WIP (work in progress). meaning I will try to add all the necessary methods day by day. If there any recommended changes that should be made to this file please reply back --- .../linkedlist/Singlylinkedlist | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 src/test/python/algorithms/datastructures/linkedlist/Singlylinkedlist diff --git a/src/test/python/algorithms/datastructures/linkedlist/Singlylinkedlist b/src/test/python/algorithms/datastructures/linkedlist/Singlylinkedlist new file mode 100644 index 0000000..e5f8bad --- /dev/null +++ b/src/test/python/algorithms/datastructures/linkedlist/Singlylinkedlist @@ -0,0 +1,87 @@ +class SinglyNode: + def __init__(self, data): + self.data = data + self.next = None + + def __repr__(self): + return self.data + + +class SinglyLinkedList: + def __init__(self, nodes=None): + self.head = None + self.tail = None + self.nodes = nodes + if nodes is None: + self.size = 0 + if nodes is not None: + self.size = len(nodes) + node = SinglyNode(data=nodes.pop(0)) + self.head = node + for elem in nodes: + node.next = SinglyNode(data=elem) + node = node.next + self.tail = node + + def __iter__(self): + node = self.head + while node is not None: + yield node + node = node.next + + def __repr__(self): + node = self.head + nodes = [] + while node is not None: + nodes.append(str(node.data)) + node = node.next + if self.size == 0: + return "None" + nodes.append("None") + return " --> ".join(nodes) + + def __len__(self): + return self.size + + def clear(self): + node = self.head + while node is not None: + node.data = None + node = node.next + self.size = 0 + + def isEmpty(self): + if self.size == 0: + return True + else: + return False + + def findHead(self): + return self.head + + def findTail(self): + return self.tail + + def findSize(self): + node = self.head + total_nodes = 0 + while node is not None: + node = node.next + total_nodes += 1 + self.size = total_nodes + return self.size + + def addLast(self, element): + if self.size == 0: + self.head = SinglyNode(element) + self.size += 1 + + if self.tail is None: + new_node = SinglyNode(element) + self.tail = new_node + + node = self.tail + new_node = SinglyNode(element) + node.next = new_node + self.tail = node.next + self.size += 1