Skip to content

Commit 4ec569c

Browse files
committed
Linked list
1 parent e718fb4 commit 4ec569c

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

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

0 commit comments

Comments
 (0)