@@ -100,7 +100,7 @@ func (d *DoublyLinkedList[V]) PushAfter(node *Node[V], v V) *Node[V] {
100100 newNode := & Node [V ]{
101101 Value : v ,
102102 }
103- d .MoveAfter (node , newNode )
103+ d .moveAfter (node , newNode )
104104 return newNode
105105}
106106
@@ -111,6 +111,10 @@ func (d *DoublyLinkedList[V]) PushAfter(node *Node[V], v V) *Node[V] {
111111func (d * DoublyLinkedList [V ]) MoveAfter (node * Node [V ], moving * Node [V ]) {
112112 // first detach node were moving after, in case it was already attached somewhere else in the list.
113113 d .Remove (moving )
114+ d .moveAfter (node , moving )
115+ }
116+
117+ func (d * DoublyLinkedList [V ]) moveAfter (node * Node [V ], moving * Node [V ]) {
114118 next := node .next
115119
116120 // no next means node == d.tail
@@ -132,7 +136,7 @@ func (d *DoublyLinkedList[V]) PushBefore(node *Node[V], v V) *Node[V] {
132136 newNode := & Node [V ]{
133137 Value : v ,
134138 }
135- d .MoveBefore (node , newNode )
139+ d .moveBefore (node , newNode )
136140 return newNode
137141}
138142
@@ -143,6 +147,10 @@ func (d *DoublyLinkedList[V]) PushBefore(node *Node[V], v V) *Node[V] {
143147func (d * DoublyLinkedList [V ]) MoveBefore (node * Node [V ], moving * Node [V ]) {
144148 // first detach node were moving after, in case it was already attached somewhere else in the list.
145149 d .Remove (moving )
150+ d .moveBefore (node , moving )
151+ }
152+
153+ func (d * DoublyLinkedList [V ]) moveBefore (node * Node [V ], moving * Node [V ]) {
146154 prev := node .prev
147155
148156 // no prev means node == d.head
@@ -188,12 +196,9 @@ func (d *DoublyLinkedList[V]) Back() *Node[V] {
188196}
189197
190198// Remove removes the provided element from the Linked List.
199+ //
200+ // The supplied node must be attached to the current list otherwise undefined behaviour could occur.
191201func (d * DoublyLinkedList [V ]) Remove (node * Node [V ]) {
192- if node .prev == nil && node .next == nil {
193- // is a detached node, early exit
194- return
195- }
196-
197202 if node .prev == nil {
198203 // is head node
199204 _ = d .PopFront ()
0 commit comments