DoxigAlpha

insertBefore

Function parameters

Parameters

#
list:*DoublyLinkedList
existing_node:*Node
new_node:*Node

This struct contains only the prev and next pointers and not any data

Types

#
Node
This struct contains only the prev and next pointers and not any data

Functions in this namespace

Functions

#
concatByMoving
Concatenate list2 onto the end of list1, removing all entries from the former.
append
Insert a new node at the end of the list.
prepend
Insert a new node at the beginning of the list.
remove
Remove a node from the list.
pop
Remove and return the last node in the list.
popFirst
Remove and return the first node in the list.
len
Iterate over all nodes, returning the count.

Source

Implementation

#
pub 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;
}