Ответ
Связный список — это линейная структура данных, состоящая из последовательности узлов (Nodes), где каждый узел хранит:
- Данные (value).
- Ссылку (указатель) на следующий узел (
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) (медленно) | |
| Использование памяти | Больше (хранит ссылки) | Меньше (только данные) |
Когда использовать? Связные списки эффективны для реализации стеков, очередей или в сценариях с частыми вставками/удалениями в начале последовательности, где не требуется быстрый произвольный доступ.