Skip to content

Commit 23b2881

Browse files
committed
the changes were done
1 parent 236de62 commit 23b2881

1 file changed

Lines changed: 17 additions & 18 deletions

File tree

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
1+
from typing import Optional
2+
3+
14
class Node:
2-
def __init__(self, value):
3-
self.value = value
4-
self.next = None
5-
self.previous = None
5+
__slots__ = ("value", "next", "previous")
6+
7+
def __init__(self, value: str) -> None:
8+
self.value: str = value
9+
self.next: Optional[Node] = None
10+
self.previous: Optional[Node] = None
611

712

813
class LinkedList:
9-
def __init__(self):
10-
self.head = None
11-
self.tail = None
14+
def __init__(self) -> None:
15+
self.head: Optional[Node] = None
16+
self.tail: Optional[Node] = None
1217

13-
def push_head(self, value):
18+
def push_head(self, value: str) -> Node:
1419
new_node = Node(value)
1520

1621
if self.head is None:
@@ -23,22 +28,16 @@ def push_head(self, value):
2328

2429
return new_node
2530

26-
def pop_tail(self):
31+
def pop_tail(self) -> str:
2732
if self.tail is None:
2833
raise IndexError("Cannot pop from an empty list")
2934

3035
removed_node = self.tail
31-
32-
if self.head == self.tail:
33-
self.head = None
34-
self.tail = None
35-
else:
36-
self.tail = self.tail.previous
37-
self.tail.next = None
36+
self.remove(removed_node)
3837

3938
return removed_node.value
4039

41-
def remove(self, node):
40+
def remove(self, node: Node) -> None:
4241
if node.previous is None:
4342
self.head = node.next
4443
else:
@@ -50,4 +49,4 @@ def remove(self, node):
5049
node.next.previous = node.previous
5150

5251
node.next = None
53-
node.previous = None
52+
node.previous = None

0 commit comments

Comments
 (0)