pub fn insertBefore(list: *DoublyLinkedList, existing_node: *Node, new_node: *Node) void list: *DoublyLinkedListexisting_node: *Nodenew_node: *Node43
44
45
46
47
48
49
50
51
52
53
54
55pub fn insertBefore(list: *DoublyLinkedList, existing_node: *Node, new_node: *Node) void {
new_node.next = existing_node;
if (existing_node.prev) |prev_node| {
// Intermediate node.
new_node.prev = prev_node;
prev_node.next = new_node;
} else {
// First element of the list.
new_node.prev = null;
list.first = new_node;
}
existing_node.prev = new_node;
}