Может ли первый элемент (head) в LinkedList Java иметь ссылку на предыдущий узел?

«Может ли первый элемент (head) в LinkedList Java иметь ссылку на предыдущий узел?» — вопрос из категории Алгоритмы и структуры данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, первый элемент (head) в java.util.LinkedList имеет ссылку prev = null. LinkedList в Java реализован как двусвязный список, где граничные узлы имеют null-ссылки.

Структура узла LinkedList:

private static class Node<E> {
    E item;
    Node<E> next;
    Node<E> prev;
    // конструктор
}

Пример и логика:

LinkedList<String> list = new LinkedList<>();
list.add("A"); // head: item="A", prev=null, next→"B"
list.add("B"); // элемент "B": prev→"A", next=null (становится tail)

Ключевые особенности:

  • head.prev всегда null – это маркер начала списка.
  • tail.next всегда null – маркер конца списка.
  • Внутренние узлы имеют обе ссылки (prev и next), что позволяет эффективно обходить список в обоих направлениях.