Skip to content

Commit 54f5801

Browse files
committed
complete linked-list
1 parent f13588d commit 54f5801

1 file changed

Lines changed: 55 additions & 0 deletions

File tree

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

0 commit comments

Comments
 (0)