LinkedList<T>
не поддерживает циклические списки.Из документов :
Класс LinkedList<T>
не поддерживает формирование цепочек, разбиение, циклы или другие функции, которые могут оставить список в несогласованном состоянии.
Нет такого метода, как LinkedListNode<T>.AddNext()
, но я ожидаю, что любая попытка вызвать сбой цикла с исключением.
Вы всегда можете построить итератор на основе на LinkedList<T>
хотя ...
(Обратите внимание, что произойдет сбой, если список пуст ...)
public static IEnumerable<Tuple<T, bool, bool>> IterateInCycles<T>
(LinkedList<T> source)
{
LinkedList<T> node = source.First;
while (true)
{
yield return Tuple.Create(node.Value,
node.Previous == null,
node.Next == null);
node = node.Next ?? source.First;
}
}
Каждый кортеж в последовательности возврата будет (value, isFirst, isLast)
если вы понимаете, о чем я.