DEV//UNIT
← Алгоритмыdata-structures

Двусвязный список

У каждого узла prev и next: удаление O(1), обход в обе стороны.

время O(1) вставка/удалениепамять O(n)уровень: начальный
Что происходит сейчас0/0
Нажмите Play, чтобы запустить сценарий
TypeScript — активная строка подсвечена шагом
1class DNode {
2 value: number
3 prev: DNode | null = null
4 next: DNode | null = null
5 constructor(value: number) { this.value = value }
6}
7
8function insertAfter(node: DNode, value: number): DNode {
9 const fresh = new DNode(value)
10 fresh.prev = node
11 fresh.next = node.next
12 if (node.next !== null) node.next.prev = fresh
13 node.next = fresh
14 return fresh
15}
16
17function removeNode(node: DNode): void {
18 if (node.prev !== null) node.prev.next = node.next
19 if (node.next !== null) node.next.prev = node.prev
20}

Проблема

У каждого узла prev и next: удаление O(1), обход в обе стороны.

Что вы видите

Узлы со стрелками в обе стороны: вставка в середину — четыре перестрелки, никакого сдвига.

Как это работает

Плата —额外的 указатель на узел; выгода — удаление по ссылке без поиска и обход назад. На двусвязном списке живёт LRU-кэш.

Пошаговый разбор

  1. 01

    Вставка

    fresh получает prev и next, соседи обновляются.

  2. 02

    Обход назад

    По prev от хвоста к голове.

  3. 03

    Удаление

    Соседи перемахивают через узел.

Complexity и ограничения

time
O(1) вставка/удаление
space
O(n)

См. complexity в шапке страницы.

Edge cases

  • Пустой вход

    Корректно завершается без лишних шагов.

  • Вырожденный случай

    Минимум работы — сразу ответ.

Где встречается в реальности

Продукт

Классический приём в реальных системах.

Собеседования

Стандартный вопрос на понимание структуры.

Связанные алгоритмы

Shorts

«Удаление за две стрелки: prev и next»

Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.

Shorts 9:16

Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.

Удаление за две стрелки: prev и next
Нажмите Play
Бит 1/6 · 0–2 с
Hook
script-setup.ru/algorithms/doubly-linked-list