C# 如何获取LinkedList中的第n个元素<;T>;?

C# 如何获取LinkedList中的第n个元素<;T>;?,c#,.net,data-structures,linked-list,C#,.net,Data Structures,Linked List,如何获取LinkedList实例的第n个元素?是否有内置的方法,或者我可能需要介绍自己的实现?例如扩展方法 谢谢您可以使用ElementAt()可枚举扩展方法。LinkedList本机不支持随机访问的原因是,对于数据结构而言,这是一种效率相当低的操作。如果要经常这样做,您应该考虑使用更合适的数据结构。扩展方法可以做到: // This is 0-based of course var value = linkedList.ElementAt(n); 不要忘记这是一个O(n)操作,因为Linke

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

谢谢

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

扩展方法可以做到:

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

不要忘记这是一个O(n)操作,因为
LinkedList
没有提供任何更有效的按索引访问项目的方法。如果您需要定期这样做,它建议您不应该首先使用链表。

您可以使用LINQ,如
list.ElementAt(n)
list.Skip(n-1).First()
,但如果您发现自己对链表进行索引访问,则可能是做错了什么(链表不能有效地支持此操作)。也许另一种数据结构更合适?

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

假设您正在采取必要的步骤来确保您有两个项目,您可以简单地做到这一点:

list.First.Next.Value

首先,为什么?确实需要链接列表吗?我有一个InsertedSortList示例,它在LinkedList数据结构上使用InsertAt(int I)等方法。这就是我想问的原因。是这样还是MSDN文档?请Microsoft在文档中添加复杂性:)@Jon不要挑剔,但是如果我实现了
IList
,索引操作就不能是
O(n)
,这有必要吗?