File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed
Sprint-2/implement_linked_list Expand file tree Collapse file tree 1 file changed +55
-0
lines changed 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
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
You can’t perform that action at this time.
0 commit comments