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

35,630

Solution 1

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.

Solution 2

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.

Solution 3

I needed to get the second element of my list (to update a value on the 1st item based on the 2nd)

Assuming you're taking the necessary steps to ensure you do have two items you can simply do this :

list.First.Next.Value

Solution 4

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?

Share:
35,630
vel
Author by

vel

Updated on July 09, 2022

Comments

  • vel
    vel almost 2 years

    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