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
5+ self .previous = None
6+ class LinkedList :
7+ def __init__ (self ):
8+ self .head = None
9+ self .tail = None
10+
11+ def push_head (self , value ):
12+ """Add a value to the head. Return the node as a handle."""
13+ node = Node (value )
14+ node .next = self .head
15+
16+ if self .head :
17+ self .head .previous = node
18+ self .head = node
19+ if not self .tail :
20+ self .tail = node #list=empty,tail also points to new node
21+ return node
22+
23+ def pop_tail (self ):
24+ if not self .tail :
25+ return None
26+ value = self .tail .value
27+ prev_node = self .tail .previous
28+ if prev_node :
29+ prev_node .next = None
30+ self .tail = prev_node
31+
32+
33+ if not self .tail :
34+ self .head = None #If we removed the only element
35+
36+ return value
37+
38+ def remove (self , node ):
39+ if not node :
40+ return
41+ prev_node = node .previous
42+ next_node = node .next
43+ if prev_node :
44+ prev_node .next = next_node
45+ else :
46+ self .head = next_node
47+ if next_node :
48+ next_node .previous = prev_node
49+ else :
50+ self .tail = prev_node
51+ node .next = None # Disconnect node
52+ node .previous = None
You can’t perform that action at this time.
0 commit comments