Легко. Сохраните в списке два указателя. На каждом шаге продвигайте один указатель на одну ссылку, а другой - на две. Проверьте, указывают ли они на один и тот же элемент. Если да, то у вас есть петля. Если нет, повторяйте, пока не найдете петлю или не дойдете до конца списка.
На прошлой неделе у меня была точно такая же проблема в реальном коде.
Все, что я сделал, это сохранил указатель (ссылку) для первого элемента. Затем, когда я итерировал список, если я получал этот указатель снова, я знал, что есть цикл.
Вероятно, это та же техника, что и проверка того, является ли граф деревом (у деревьев не бывает циклов), см. этот вопрос. Рекомендуется либо топологическая сортировка, либо поиск по глубине.