Как получить n-й элемент в LinkedList <T>? - программирование
Подтвердить что ты не робот

Как получить n-й элемент в LinkedList <T>?

Как я могу получить n-й элемент экземпляра LinkedList? Есть ли встроенный способ, или мне может потребоваться ввести мою собственную реализацию? Например, метод расширения?

Спасибо

4b9b3361

Ответ 1

Этот метод расширения ElementAt сделает это:

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

Не забывайте, что это операция O (n), потому что LinkedList<T> не обеспечивает более эффективный способ доступа к элементу по индексу. Если вам нужно делать это регулярно, это предполагает, что вы не должны использовать связанный список для начала.

Ответ 2

Вы можете использовать метод расширенного расширения ElementAt(). Причина, по которой LinkedList не поддерживает случайный доступ изначально, заключается в том, что это довольно неэффективная операция для структуры данных. Если вы собираетесь делать это часто, вам следует подумать об использовании более подходящей структуры данных.

Ответ 3

Вы можете сделать это с помощью LINQ, как в list.ElementAt(n) или list.Skip(n - 1).First(), но если вы обнаружите, что вы делаете индексированный доступ в связанный список, вы, вероятно, что-то делаете неправильно (связанные списки не поддерживают эту операцию). Возможно, более подходящей будет структура данных?

Ответ 4

Мне нужно было получить второй элемент моего списка (чтобы обновить значение по 1-му элементу на основе второго)

Предполагая, что вы предпринимаете необходимые шаги, чтобы убедиться, что у вас есть два элемента, вы можете просто сделать это:

list.First.Next.Value