我对LinkedList<>
有疑问
此列表的属性为First
和Last
。
如果我设置Last.AddNext(First)
?
我需要列出Last>Next = First
的列表,但要清楚地标识First
和Last
元素。
我有一个周期process.NextStep, NextStep
,但需要能够识别每个步骤(process[i]
- i -th Step)
.NET 2
答案 0 :(得分:3)
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)
。
答案 1 :(得分:1)
有关如何在C#here中构建循环列表的一些信息。