Skip to content

Commit 3b7b8cc

Browse files
committed
Implement linked list with push_head, pop_tail, and remove methods
1 parent 134e683 commit 3b7b8cc

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
class Node:
2+
def __init__(self, value):
3+
self.value = value
4+
self.next = None
5+
self.previous = None
6+
7+
class LinkedList:
8+
def __init__(self):
9+
self.head = None
10+
self.tail = None
11+
12+
def push_head(self, value):
13+
node = Node(value)
14+
node.next = self.head
15+
if self.head:
16+
self.head.previous = node
17+
self.head = node
18+
if self.tail is None:
19+
self.tail = node
20+
return node
21+
22+
def pop_tail(self):
23+
if self.tail is None:
24+
return None
25+
node = self.tail
26+
value = node.value
27+
if node.previous:
28+
self.tail = node.previous
29+
self.tail.next = None
30+
else:
31+
self.head = None
32+
self.tail = None
33+
return value
34+
35+
def remove(self, node):
36+
if node.previous:
37+
node.previous.next = node.next
38+
else:
39+
self.head = node.next
40+
if node.next:
41+
node.next.previous = node.previous
42+
else:
43+
self.tail = node.previous
44+
node.next = None
45+
node.previous = None

0 commit comments

Comments
 (0)