Когда совокупность узлов (нодов) образует связный список?

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

Ответ

Совокупность узлов образует односвязный список, если выполняются следующие условия:

  1. Структура узла: Каждый узел содержит данные и одну ссылку (next) на следующий узел в последовательности.
  2. Последовательная связность: Начиная с головного узла (head), можно пройти по всем узлам, следуя ссылкам next.
  3. Конец списка: Последний узел имеет ссылку next, равную null (или специальному маркеру).

Пример на Java:

class Node<T> {
    T data;
    Node<T> next;
    Node(T data) {
        this.data = data;
        this.next = null;
    }
}

// Создание связного списка из трех узлов
Node<Integer> head = new Node<>(1);
head.next = new Node<>(2);
head.next.next = new Node<>(3);
// Структура: 1 -> 2 -> 3 -> null

Важные уточнения:

  • Двусвязный список: Узел содержит две ссылки — next и prev.
  • Циклический (кольцевой) список: Последний узел ссылается на первый (next не равен null).
  • Просто набор узлов без ссылок next или с нарушенной последовательностью (например, разрыв ссылки) не является связным списком.