Skip to content

Commit fe9b1fa

Browse files
committed
code for linked_list.py
1 parent aad8ad2 commit fe9b1fa

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
class Node:
2+
def __init__(self, value):
3+
self.value = value
4+
self.previous = None
5+
self.next = 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+
new_node = Node(value) # <-- Node must exist
14+
if not self.head:
15+
self.head = self.tail = new_node
16+
else:
17+
new_node.next = self.head
18+
self.head.previous = new_node
19+
self.head = new_node
20+
return new_node
21+
22+
def pop_tail(self):
23+
if not self.tail:
24+
return None
25+
value = self.tail.value
26+
if self.head == self.tail:
27+
self.head = self.tail = None
28+
else:
29+
self.tail = self.tail.previous
30+
self.tail.next = None
31+
return value
32+
33+
def remove(self, node):
34+
if node is self.head:
35+
self.head = node.next
36+
if self.head:
37+
self.head.previous = None
38+
39+
if node is self.tail:
40+
self.tail = node.previous
41+
if self.tail:
42+
self.tail.next = None
43+
44+
if node.previous:
45+
node.previous.next = node.next
46+
47+
if node.next:
48+
node.next.previous = node.previous
49+
50+
node.previous = node.next = None
51+

0 commit comments

Comments
 (0)