Circular Doubly Linked List find length with single pointer
I think the following algorithm would do it:


Start by setting the value in the first node to $1$.
Follow next pointers until you encounter a node with value $1$, while keeping a counter $c$ of how many nodes you have encountered.
Set the value of the node to $0$ and follow prev pointers for $c$ steps


If the value of the node (which should be the first node) is now $0$, the list has $c-1$ elements,
otherwise, follow next pointers for $c$ steps and continue with step 2.