There is an endless (circular) linked list

When a node is pointing to the null, we know that that is the last node in the list.

Node *curr = head;

// traverse until the END
while (curr->next != null) {
    curr = curr->next;
}

But there’s a linked list where nodes never point to the null, creating an endless list. This is called Circular Linked List; there is an exception which is the empty list.

In a circular linked list, the last node points back to the first node creating a circular list. This means when a list only has a single node, the node points back to itself.

For the case of a doubly linked list where backward traverse is possible, in addition to the tail node pointing back to the head node, the head’s previous node would also point back to the tail node.