LinkedList<T>
не поддерживают круговые списки. От the docs:
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)
, если вы понимаете, что я имею в виду.
Вы имеете в виду, что пытаетесь создать круговой список? Я сомневаюсь, что вы можете сделать это с классом по умолчанию. Я бы ожидал 'Last.AddNext (First)', чтобы добавить копию первого элемента в конец списка, но не создать цикл. – Rup