Traverse from any node

void traverse(Node start) {
  Node cur = start;
  do {
    process(cur);
    cur = cur.next;
  } while (cur != start);
}
Advertisement

Insert at tail — O(1) with tail pointer

Node tail; // maintains tail
tail.next = newNode;
newNode.next = head;
tail = newNode;
Advertisement

Round-robin scheduling

OS process scheduler: circular list of processes, advance pointer per time slice. Fair sharing.

Ring buffers

Fixed-size circular list = ring buffer. Audio DSP, streaming, producer-consumer with backpressure.