From 5bd04a4886c7174f6287ad82d460ff61748217b8 Mon Sep 17 00:00:00 2001 From: eyuell21 Date: Tue, 14 Oct 2025 11:25:33 +0100 Subject: [PATCH] Linked list implementation. --- Sprint-2/implement_linked_list/linked_list.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/Sprint-2/implement_linked_list/linked_list.py b/Sprint-2/implement_linked_list/linked_list.py index e69de29..8fceb0a 100644 --- a/Sprint-2/implement_linked_list/linked_list.py +++ b/Sprint-2/implement_linked_list/linked_list.py @@ -0,0 +1,53 @@ +class Node: + def __init__(self, value): + self.value = value + self.prev = None + self.next = None + +class LinkedList: + def __init__(self): + self.head = None + self.tail = None + + def push_head(self, value): + new_node = Node(value) + new_node.next = self.head + new_node.prev = None + + if self.head is not None: + self.head.prev = new_node + self.head = new_node + + if self.tail is None: + self.tail = new_node + + return new_node + + def pop_tail(self): + if self.tail is None: + return + node_to_be_removed = self.tail + self.tail = node_to_be_removed.prev + + if self.tail is not None: + self.tail.next = None + else: + self.head = None + + return node_to_be_removed.value + + def remove(self, node): + if node.prev is not None: + node.prev.next = node.next + else: + self.head = node.next + if node.next is not None: + node.next.prev = node.prev + if node == self.tail: + self.tail = node.prev + node.prev = None + node.next = None + + + +