Skip to content

Commit 9721c4c

Browse files
committed
added new test and slightly refactored the logic of removing the head
1 parent 4cd4b26 commit 9721c4c

2 files changed

Lines changed: 20 additions & 8 deletions

File tree

Sprint-2/implement_linked_list/linked_list.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
class Node:
2+
def __init__(self, value):
3+
self.value = value
4+
self.previous = None
5+
self.next = None
6+
7+
18
class LinkedList:
29
def __init__(self):
310
self.head = None
@@ -34,7 +41,7 @@ def remove(self, node):
3441
else:
3542
# head == node, tail != node
3643
self.head = node.next
37-
node.next.previous = node.previous = node.next = None
44+
self.head.previous = node.next = None
3845
else:
3946
if self.tail == node:
4047
# head != node, tail == node
@@ -45,10 +52,3 @@ def remove(self, node):
4552
node.previous.next = node.next
4653
node.next.previous = node.previous
4754
node.previous = node.next = None
48-
49-
50-
class Node:
51-
def __init__(self, value):
52-
self.value = value
53-
self.previous = None
54-
self.next = None

Sprint-2/implement_linked_list/linked_list_test.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from linked_list import LinkedList
44

5+
56
class LinkedListTest(unittest.TestCase):
67
def test_pushes_then_pops(self):
78
l = LinkedList()
@@ -34,6 +35,17 @@ def test_remove_tail(self):
3435
self.assertIsNone(b.next)
3536
self.assertIsNone(b.previous)
3637

38+
def test_remove_last(self):
39+
l = LinkedList()
40+
a = l.push_head("a")
41+
b = l.push_head("b")
42+
l.remove(a)
43+
l.remove(b)
44+
self.assertIsNone(a.next)
45+
self.assertIsNone(b.previous)
46+
self.assertIsNone(l.head)
47+
self.assertIsNone(l.tail)
48+
3749

3850
if __name__ == "__main__":
3951
unittest.main()

0 commit comments

Comments
 (0)