Circular linked lists
A circular linked list is a variation of a linked list where the last node's next pointer (or tail.next
) references the first node (head
) instead of being null
or undefined
. This creates a closed loop structure., as we can see in the following diagram:

A doubly circular linked list has tail.next
pointing to the head element, and head.previous
pointing to the tail
element as showed as follows:

The key difference between circular and regular (linear) linked lists is that there is no explicit end to a circular linked list. You can continuously traverse the list starting from any node and eventually return to the starting point.
We will implement a singly circular linked list, and you can find the bonus source code for a doubly circular linked list in the source code from this book.
Let's check the code to create the CircularLinkedList
class:
class CircularLinkedList...