@@ -76,7 +76,11 @@ class DoubleLinkedList:
76
76
True
77
77
78
78
>>> # Attempt to remove head or rear
79
- >>> # removed_node = dll.remove(DoubleLinkedListNode(None, None))
79
+ >>> dll.rear
80
+ Node: key: None, val: None, has next: False, has prev: True
81
+ >>> dll.remove(dll.rear) is None
82
+ True
83
+
80
84
81
85
"""
82
86
@@ -103,14 +107,22 @@ def add(self, node: DoubleLinkedListNode) -> None:
103
107
temp .next , node .prev = node , temp
104
108
self .rear .prev , node .next = node , self .rear
105
109
106
- def remove (self , node : DoubleLinkedListNode ) -> DoubleLinkedListNode :
110
+ def remove (self , node : DoubleLinkedListNode ) -> DoubleLinkedListNode | None :
107
111
"""
108
112
Removes and returns the given node from the list
113
+
114
+ Returns None if node.prev or node.next is None
109
115
"""
110
116
111
- temp_last , temp_next = node .prev , node .next
112
- node .prev , node .next = None , None
113
- temp_last .next , temp_next .prev = temp_next , temp_last
117
+ if node .prev is None :
118
+ return None
119
+ elif node .next is None :
120
+ return None
121
+ else :
122
+ node .prev .next = node .next
123
+ node .next .prev = node .prev
124
+ node .prev = None
125
+ node .next = None
114
126
115
127
return node
116
128
0 commit comments