Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get the n-th element in a LinkedList<T>?

How can I get the n-th element of a LinkedList instance? Is there a built-in way or I might need to introduce my own implementation? For example an extension method?

Thanks

like image 635
pencilCake Avatar asked Apr 15 '12 17:04

pencilCake


3 Answers

The ElementAt extension method will do it:

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

Don't forget this is an O(n) operation because LinkedList<T> doesn't provide any more efficient way of accessing an item by index. If you need to do this regularly, it suggests that you shouldn't be using a linked list to start with.

like image 57
Jon Skeet Avatar answered Nov 20 '22 12:11

Jon Skeet


You can use the ElementAt() enumerable extension method. The reason LinkedList doesn't support random access natively is because it's a rather inefficient operation for the data structure. If you're going to be doing it often you should think about using a more appropriate data structure.

like image 43
MikeP Avatar answered Nov 20 '22 13:11

MikeP


You can do it with LINQ as in list.ElementAt(n) or list.Skip(n - 1).First() , but if you find yourself making indexed access into a linked list you are probably doing something wrong (linked lists do not efficiently support this operation). Perhaps another data structure would be more appropriate?

like image 2
Jon Avatar answered Nov 20 '22 13:11

Jon