Skip to content

Commit e862c3b

Browse files
committed
copying my linked list implementation into this new branch as I mistakenly commited into main and thus my PR failed.
1 parent e718fb4 commit e862c3b

1 file changed

Lines changed: 64 additions & 0 deletions

File tree

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
class Node:
2+
def __init__(self, data):
3+
self.data = data
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, data):
13+
new_head_node = Node(data)
14+
if self.head is not None:
15+
new_head_node.next = self.head
16+
self.head.previous = new_head_node
17+
18+
self.head = new_head_node
19+
if self.tail is None:
20+
self.tail = new_head_node
21+
22+
return new_head_node
23+
24+
25+
26+
def pop_tail(self):
27+
if self.tail is not None:
28+
tail_node = self.tail
29+
previous = self.tail.previous
30+
self.tail = previous
31+
if self.tail is not None:
32+
self.tail.next = None
33+
else:
34+
self.head = None
35+
else:
36+
raise IndexError("Unable to remove from empty linked list")
37+
38+
return tail_node.data
39+
40+
41+
42+
def remove(self, node):
43+
if node.previous is not None:
44+
node.previous.next = node.next
45+
else:
46+
self.head = node.next
47+
48+
if node.next is not None:
49+
node.next.previous = node.previous
50+
else:
51+
self.tail = node.previous
52+
53+
54+
55+
56+
57+
58+
59+
60+
61+
62+
63+
64+

0 commit comments

Comments
 (0)