Am just sharing idea, not code.
Make two pointers such that pointer1 traverse 1 by 1, pointer 2 traverse by 2.
List is not circular if pointer 2 meets NULL [have to make check for this].
List is circular if pointer2 meets any of first 2 element [have to make check for this also].
Such that for even number of nodes pointer 2 meets first element [Have to take backup of first 2 elements]
@Experts, Let me know if you have alternate approach.