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

pen*_*ake 22 .net c# linked-list data-structures

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

谢谢

Jon*_*eet 33

ElementAt扩展方法会做到这一点:

// This is 0-based of course
var value = linkedList.ElementAt(n);
Run Code Online (Sandbox Code Playgroud)

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

  • 微软,请在文档中添加复杂性:) (11认同)

Mik*_*keP 6

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