Skip to content

Commit 236de62

Browse files
committed
implement_linked_list task was complegted
1 parent f13588d commit 236de62

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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+
self.head = None
11+
self.tail = None
12+
13+
def push_head(self, value):
14+
new_node = Node(value)
15+
16+
if self.head is None:
17+
self.head = new_node
18+
self.tail = new_node
19+
else:
20+
new_node.next = self.head
21+
self.head.previous = new_node
22+
self.head = new_node
23+
24+
return new_node
25+
26+
def pop_tail(self):
27+
if self.tail is None:
28+
raise IndexError("Cannot pop from an empty list")
29+
30+
removed_node = self.tail
31+
32+
if self.head == self.tail:
33+
self.head = None
34+
self.tail = None
35+
else:
36+
self.tail = self.tail.previous
37+
self.tail.next = None
38+
39+
return removed_node.value
40+
41+
def remove(self, node):
42+
if node.previous is None:
43+
self.head = node.next
44+
else:
45+
node.previous.next = node.next
46+
47+
if node.next is None:
48+
self.tail = node.previous
49+
else:
50+
node.next.previous = node.previous
51+
52+
node.next = None
53+
node.previous = None

0 commit comments

Comments
 (0)