From 05c5b15e85a4b2134afb828240cf4d4bb44faef9 Mon Sep 17 00:00:00 2001 From: katarzynakaz Date: Fri, 20 Feb 2026 18:58:55 +0000 Subject: [PATCH 1/5] linked list task solved! --- Sprint-2/implement_linked_list/linked_list.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/Sprint-2/implement_linked_list/linked_list.py b/Sprint-2/implement_linked_list/linked_list.py index e69de29..420ac83 100644 --- a/Sprint-2/implement_linked_list/linked_list.py +++ b/Sprint-2/implement_linked_list/linked_list.py @@ -0,0 +1,39 @@ +# //operations +# `push_head` should add an element to the start of the list. +# It should return something that can be passed to `remove` to +# remove that element in the future. + + + +# `pop_tail` should remove an element from the end of the list. +# * `remove` takes a handle from `push_head`, +# and removes that element from the list. + +our_list = [] +tracker_number = 0 + +def push_head(item_to_insert): +# // grab tracker + global tracker_number + # //assign so gets updated /// + id_for_this_particular_item = tracker_number + # //wrap item to unsert in {} + wrapped_item = { + "tracker": id_for_this_particular_item, + "inserted_item_key": item_to_insert + } + + our_list.insert(0, wrapped_item) + tracker_number +=1 + return id_for_this_particular_item + +def remove(id_for_this_particular_item): + for item in our_list: + if item["tracker"] == id_for_this_particular_item: + our_list.remove(item) + return item + +def pop_tail(): + if len(our_list) > 0: + return our_list.pop() + From 9db693f114a817a9fcedfd69180ad547b3d4f700 Mon Sep 17 00:00:00 2001 From: katarzynakaz Date: Mon, 2 Mar 2026 12:17:54 +0000 Subject: [PATCH 2/5] fixes to linked list --- .gitignore | 1 + Sprint-2/implement_linked_list/linked_list.py | 49 +++++++++---------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index bfb5886..6367f73 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ node_modules .venv __pycache__ +package-lock.json diff --git a/Sprint-2/implement_linked_list/linked_list.py b/Sprint-2/implement_linked_list/linked_list.py index 420ac83..36a774c 100644 --- a/Sprint-2/implement_linked_list/linked_list.py +++ b/Sprint-2/implement_linked_list/linked_list.py @@ -8,32 +8,31 @@ # `pop_tail` should remove an element from the end of the list. # * `remove` takes a handle from `push_head`, # and removes that element from the list. +class LinkedList: + def __init__(self): + self.our_list = [] + self.tracker_number = 0 -our_list = [] -tracker_number = 0 + def push_head(self, item_to_insert): + # assign so gets updated + id_for_this_particular_item = self.tracker_number + # //wrap item to unsert in {} + wrapped_item = { + "tracker": id_for_this_particular_item, + "inserted_item_key": item_to_insert + } -def push_head(item_to_insert): -# // grab tracker - global tracker_number - # //assign so gets updated /// - id_for_this_particular_item = tracker_number - # //wrap item to unsert in {} - wrapped_item = { - "tracker": id_for_this_particular_item, - "inserted_item_key": item_to_insert - } + our_list.insert(0, wrapped_item) + tracker_number +=1 + return id_for_this_particular_item - our_list.insert(0, wrapped_item) - tracker_number +=1 - return id_for_this_particular_item - -def remove(id_for_this_particular_item): - for item in our_list: - if item["tracker"] == id_for_this_particular_item: - our_list.remove(item) - return item - -def pop_tail(): - if len(our_list) > 0: - return our_list.pop() + def remove(id_for_this_particular_item): + for item in our_list: + if item["tracker"] == id_for_this_particular_item: + our_list.remove(item) + return item + def pop_tail(): + if len(our_list) > 0: + return our_list.pop() + From 1e30d3dfb68de0b1711e0df30a96b77e3aa2648a Mon Sep 17 00:00:00 2001 From: katarzynakaz Date: Mon, 2 Mar 2026 12:41:00 +0000 Subject: [PATCH 3/5] fixes to linked list --- Sprint-2/implement_linked_list/linked_list.py | 65 ++++++++++++++----- 1 file changed, 50 insertions(+), 15 deletions(-) diff --git a/Sprint-2/implement_linked_list/linked_list.py b/Sprint-2/implement_linked_list/linked_list.py index 36a774c..8c649e5 100644 --- a/Sprint-2/implement_linked_list/linked_list.py +++ b/Sprint-2/implement_linked_list/linked_list.py @@ -8,31 +8,66 @@ # `pop_tail` should remove an element from the end of the list. # * `remove` takes a handle from `push_head`, # and removes that element from the list. +class Node: + def __init__(self, tracker, inserted_item_key): + self.tracker = tracker + self.inserted_item_key = inserted_item_key + self.next = None + self.prev = None + class LinkedList: def __init__(self): - self.our_list = [] + self.head = None + self.tail=None self.tracker_number = 0 + self.our_list = [] + def push_head(self, item_to_insert): # assign so gets updated id_for_this_particular_item = self.tracker_number # //wrap item to unsert in {} - wrapped_item = { - "tracker": id_for_this_particular_item, - "inserted_item_key": item_to_insert - } + wrapped_item = Node(id_for_this_particular_item, item_to_insert) + + if self.head is None: + self.head = self.tail = wrapped_item + else: + wrapped_item.next = self.head + self.head.prev = wrapped_item + self.head = wrapped_item - our_list.insert(0, wrapped_item) - tracker_number +=1 + self.our_list.insert(0, wrapped_item) + self.tracker_number +=1 return id_for_this_particular_item - def remove(id_for_this_particular_item): - for item in our_list: - if item["tracker"] == id_for_this_particular_item: - our_list.remove(item) - return item + def remove(self, id_for_this_particular_item): + for node in self.our_list: + if node.tracker == id_for_this_particular_item: + if node.prev: + node.prev.next = node.next + else: + self.head = node.next + + if node.next: + node.next.prev = node.prev + else: + self.tail = node.prev + + self.our_list.remove(node) + return node.inserted_item_key - def pop_tail(): - if len(our_list) > 0: - return our_list.pop() + def pop_tail(self): + if not self.our_list: + return None + + old_tail = self.tail + if old_tail.prev: + self.tail = old_tail.prev + self.tail.next = None + else: + self.head = self.tail = None + + if len(self.our_list) > 0: + self.our_list.pop() + return old_tail.inserted_item_key From 202c5826fd71dee159f523985af3f1ba4bd565f2 Mon Sep 17 00:00:00 2001 From: katarzynakaz Date: Wed, 4 Mar 2026 16:46:40 +0000 Subject: [PATCH 4/5] implemented requested changes --- Sprint-2/implement_linked_list/linked_list.py | 45 ++++++++----------- 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/Sprint-2/implement_linked_list/linked_list.py b/Sprint-2/implement_linked_list/linked_list.py index 8c649e5..2280bc2 100644 --- a/Sprint-2/implement_linked_list/linked_list.py +++ b/Sprint-2/implement_linked_list/linked_list.py @@ -20,44 +20,39 @@ def __init__(self): self.head = None self.tail=None self.tracker_number = 0 - self.our_list = [] - def push_head(self, item_to_insert): - # assign so gets updated - id_for_this_particular_item = self.tracker_number - # //wrap item to unsert in {} - wrapped_item = Node(id_for_this_particular_item, item_to_insert) + # //wrap item to insert in {} + wrapped_item = Node(None, item_to_insert) - if self.head is None: + if not self.head: self.head = self.tail = wrapped_item else: wrapped_item.next = self.head self.head.prev = wrapped_item self.head = wrapped_item - self.our_list.insert(0, wrapped_item) + # self.our_list.insert(0, wrapped_item) self.tracker_number +=1 - return id_for_this_particular_item + return wrapped_item def remove(self, id_for_this_particular_item): - for node in self.our_list: - if node.tracker == id_for_this_particular_item: - if node.prev: - node.prev.next = node.next - else: - self.head = node.next + node_to_remove = id_for_this_particular_item + + if node_to_remove.prev: + node_to_remove.prev.next = node_to_remove.next + else: + self.head = node_to_remove.next + + if node_to_remove.next: + node_to_remove.next.prev = node_to_remove.prev + else: + self.tail = node_to_remove.prev - if node.next: - node.next.prev = node.prev - else: - self.tail = node.prev + return node_to_remove.inserted_item_key - self.our_list.remove(node) - return node.inserted_item_key - def pop_tail(self): - if not self.our_list: + if not self.tail: return None old_tail = self.tail @@ -67,7 +62,5 @@ def pop_tail(self): else: self.head = self.tail = None - if len(self.our_list) > 0: - self.our_list.pop() - return old_tail.inserted_item_key + return old_tail.inserted_item_key From a628d8a35bcf2b6a12c30dbe417ba33323139d4d Mon Sep 17 00:00:00 2001 From: katarzynakaz Date: Wed, 4 Mar 2026 17:56:05 +0000 Subject: [PATCH 5/5] linked list fixes --- Sprint-2/implement_linked_list/linked_list.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/Sprint-2/implement_linked_list/linked_list.py b/Sprint-2/implement_linked_list/linked_list.py index 2280bc2..c73ef9f 100644 --- a/Sprint-2/implement_linked_list/linked_list.py +++ b/Sprint-2/implement_linked_list/linked_list.py @@ -54,13 +54,4 @@ def remove(self, id_for_this_particular_item): def pop_tail(self): if not self.tail: return None - - old_tail = self.tail - if old_tail.prev: - self.tail = old_tail.prev - self.tail.next = None - else: - self.head = self.tail = None - - return old_tail.inserted_item_key - + return self.remove(self.tail)