File tree Expand file tree Collapse file tree
Sprint-2/implement_linked_list Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ class Node :
2+ def __init__ (self , value ):
3+ self .value = value
4+ self .next = None # Pointer to the next node in the list.
5+ self .previous = None # a pointer to the previous node so the removal can be done in constant time
6+
7+ class LinkedList :
8+ def __init__ (self ):
9+ self .head = None
10+ self .tail = None
11+
12+ def push_head (self , value ):
13+ new_node = Node (value )
14+ if not self .head :
15+ self .head = self .tail = new_node
16+ else :
17+ new_node .next = self .head
18+ self .head .previous = new_node
19+ self .head = new_node
20+
21+ return new_node
22+
23+ def pop_tail (self ):
24+ if not self .tail :
25+ return None
26+
27+ removed_value = self .tail .value
28+ if self .head == self .tail :
29+ self .head = self .tail = None
30+ else :
31+ self .tail = self .tail .previous
32+ self .tail .next = None
33+
34+ return removed_value
35+
36+ def remove (self , node ):
37+ if not node :
38+ return
39+
40+ if node == self .head :
41+ self .head = node .next
42+
43+
44+ if node == self .tail :
45+ self .tail = node .previous
46+
47+
48+ if node .previous :
49+ node .previous .next = node .next
50+ if node .next :
51+ node .next .previous = node .previous
52+
53+
54+ node .next = node .previous = None
You can’t perform that action at this time.
0 commit comments