DLL Operation: Insert Before
Suppose we want to insert a note before the one pointed to by the reference variable target
:

Exercise Complete the implementation of insertBefore
.
public void insertBefore(Node<T> target, T data) {
// TODO Implement me!
}
Hint: Use the following visualization as guidance.

Solution
public void insertBefore(Node<T> target, T data) {
Node<T> nodeToInsert = new Node<>(data);
Node<T> prevNode = target.prev;
target.prev = nodeToInsert;
nodeToInsert.next = target;
nodeToInsert.prev = prevNode;
prevNode.next = nodeToInsert;
}
Caution: the implementation above fails to account for edge cases!