LinkedList,First和Last

时间:2010-10-08 13:17:38

标签: .net .net-2.0 linked-list

我对LinkedList<>有疑问 此列表的属性为FirstLast

如果我设置Last.AddNext(First)

,这些属性是否会更正

我需要列出Last>Next = First的列表,但要清楚地标识FirstLast元素。

我有一个周期process.NextStep, NextStep,但需要能够识别每个步骤(process[i] - i -th Step)

.NET 2

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中构建循环列表的一些信息。