Skip to content

Commit 29d9f9f

Browse files
author
Fatma Degirmenci
committed
Implement doubly linked list
1 parent de683df commit 29d9f9f

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
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+
8+
class LinkedList:
9+
def __init__(self):
10+
#first
11+
self.head = None
12+
#last
13+
self.tail = None
14+
15+
def push_head(self, value):
16+
new_node = Node(value)
17+
18+
if self.head is None:
19+
self.head = 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 pop_tail(self):
28+
if self.tail is None:
29+
return None
30+
31+
removed = self.tail
32+
value = removed.value
33+
34+
self.remove(removed)
35+
36+
return value
37+
38+
def remove(self, node):
39+
if node is None:
40+
return
41+
42+
if node == self.head:
43+
self.head = node.next
44+
45+
if node == self.tail:
46+
self.tail = node.previous
47+
48+
if node.previous:
49+
node.previous.next = node.next
50+
51+
if node.next:
52+
node.next.previous = node.previous
53+
54+
node.next = None
55+
node.previous = None

0 commit comments

Comments
 (0)