Ну, наивным решением было бы отслеживать, в каком узле вы находитесь в данный момент, а затем выполнять итерации с самого начала, пока не найдете этот узел, всегда сохраняя только что оставленный вами узел. Затем каждый раз, когда вы находите узел, в котором находитесь в данный момент, вы создаете только что оставленный узел, сохраняете этот узел как тот, в котором находитесь в данный момент, а затем повторяете с самого начала.
Это, конечно, ужасно плохо с точки зрения производительности.
Я уверен, что у некоторых умных людей есть лучшее решение.
Псевдокод (даже с ошибками):
current node = nothing
while current node is not first node
node = start
while node is not current node
previous node = node
node = next node
produce previous node
set current node to previous node