如何获取LinkedList <t>中的第n个元素?</t>

时间:2012-04-15 17:29:30

标签: c# .net data-structures linked-list

如何获取LinkedList实例的第n个元素?是否有内置方式或者我可能需要介绍我自己的实现?例如,扩展方法?

由于

4 个答案:

答案 0 :(得分:32)

ElementAt扩展方法会执行此操作:

// This is 0-based of course
var value = linkedList.ElementAt(n);

不要忘记这是一个O(n)操作,因为LinkedList<T>没有提供通过索引访问项目的更有效方法。如果您需要定期执行此操作,则表明您不应该使用链接列表开始。

答案 1 :(得分:6)

您可以使用ElementAt()可枚举的扩展方法。 LinkedList本身不支持随机访问的原因是因为它对数据结构来说是一种相当低效的操作。如果您经常这样做,您应该考虑使用更合适的数据结构。

答案 2 :(得分:2)

您可以使用list.ElementAt(n)list.Skip(n - 1).First()中的LINQ来执行此操作,但如果您发现自己对链接列表进行了索引访问,则可能会出错(链接列表无法有效支持此操作)。也许另一种数据结构会更合适?

答案 3 :(得分:0)

我需要获取列表的第二个元素(根据第二个元素更新第一个项目的值)

假设您已采取必要措施确保您有两件物品,您可以这样做:

list.First.Next.Value