Skip to content

Commit 9e6a272

Browse files
added the linkedlist class
1 parent ff1c438 commit 9e6a272

1 file changed

Lines changed: 50 additions & 1 deletion

File tree

Sprint-2/implement_lru_cache/lru_cache.py

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,56 @@ def __init__(self, key, value):
33
self.key = key
44
self.value = value
55
self.previous = None
6-
self.next = None
6+
self.next = None
7+
8+
9+
class LinkedList:
10+
def __init__(self):
11+
self.head = None
12+
self.tail = None
13+
14+
def push_head(self, value) -> Node:
15+
new_node = Node(value)
16+
17+
if self.head is None:
18+
self.head = new_node
19+
self.tail = new_node
20+
else:
21+
new_node.next = self.head
22+
self.head.previous = new_node
23+
self.head = new_node
24+
25+
return new_node
26+
27+
def remove(self, node: Node) -> None:
28+
if node is None:
29+
return
30+
31+
if node == self.head:
32+
self.head = node.next
33+
34+
if node == self.tail:
35+
self.tail = node.previous
36+
37+
if node.previous is not None:
38+
node.previous.next = node.next
39+
40+
if node.next is not None:
41+
node.next.previous = node.previous
42+
43+
node.next = None
44+
node.previous = None
45+
46+
def pop_tail(self):
47+
if self.tail is None:
48+
return None
49+
50+
last_node = self.tail
51+
value = last_node.value
52+
53+
self.remove(last_node)
54+
55+
return value
756

857
class LruCache:
958
def __init__(self, limit: int):

0 commit comments

Comments
 (0)