Что такое связный список (Linked List) как структура данных?

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

Ответ

Связный список — это линейная структура данных, состоящая из последовательности узлов (Nodes), где каждый узел хранит:

  1. Данные (value).
  2. Ссылку (указатель) на следующий узел (next).

Реализация узла на Swift:

class Node<T> {
    var value: T
    var next: Node? // Ссылка на следующий узел

    init(value: T, next: Node? = nil) {
        self.value = value
        self.next = next
    }
}

// Создание списка: 1 -> 2 -> 3
let node3 = Node(value: 3)
let node2 = Node(value: 2, next: node3)
let head = Node(value: 1, next: node2) // Голова списка

Основные виды связных списков:

  • Односвязный (Singly Linked): Узел ссылается только на следующий.
  • Двусвязный (Doubly Linked): Узел содержит ссылки на next и previous.
  • Кольцевой (Circular): Последний узел ссылается на первый.
Сравнение с массивом (Array): Операция Связный список Массив
Доступ по индексу O(n) (медленно) O(1) (быстро)
Вставка в начало O(1) (быстро) O(n) (медленно)
Удаление из начала O(1) (быстро) O(n) (медленно)
Использование памяти Больше (хранит ссылки) Меньше (только данные)

Когда использовать? Связные списки эффективны для реализации стеков, очередей или в сценариях с частыми вставками/удалениями в начале последовательности, где не требуется быстрый произвольный доступ.