В голове вертится только два алгоритма:
1. Попытаться измерить длину - если при вычислении счетчик опрокинулся - то список кольцевой.
2. При чтении завести массив адресов, в который вносить прочитанные адреса, а затем при прочитывании каждого следующего пытаться искать его в массиве.
Есть канонiчный метод?