Деление на ноль

Связный список: интерактивная анимация (Linked List)

Базовая структура данных с динамическим выделением памяти под каждый узел

Визуализация

Сценарий: Вставка в голову
Сценарий:
Легенда цветов
обычный узел новый узел текущий/сравниваемый найденный/целевой
Нажмите "Пуск" или листайте по шагам.
Длина списка: 0 Переходов (next): 0 Шаг: 0 / 0 Сложность по времени: -

Как работает связный список

Идея структуры: В отличие от массива, элементы списка не обязаны лежать в памяти друг за другом. Каждый элемент (узел) хранит свои данные и указатель на следующий узел. Список начинается с указателя head, а последний элемент указывает на null.

Сложность

Сложность - это оценка того, как быстро растет потребление ресурса при росте числа элементов n. Ресурса у структуры два, поэтому и оценки две: по времени и по памяти. Обе записывают через O-нотацию - у нас есть отдельная анимация о том, как читать такие записи.

По времени

Операция Сложность Комментарий
Доступ по индексу (поиск) O(n) Нужно пройти по ссылкам от начала списка до нужного элемента.
Вставка / удаление в начале (head) O(1) Простая перецепка указателя head на новый узел.
Вставка / удаление в середине O(1) * Само действие перецепки ссылок. Но чтобы дойти до нужного узла, потребуется O(n).
Вставка / удаление в конце O(n) Если мы не храним ссылку tail, нужно пройти весь список до конца.

По памяти

Характеристика Оценка Комментарий
Затраты по памяти O(n) Каждый элемент хранится в отдельном узле. Дополнительные накладные расходы идут на хранение самого указателя next.

Свойства

Свойство Значение Комментарий
Организация памяти Несвязная Узлы разбросаны по оперативной памяти и связываются между собой указателями next.
Доступ по индексу O(n) Произвольный доступ отсутствует; для поиска n-го элемента требуется последовательный обход от head.
Динамический размер O(1) вставка Список растет и уменьшается без затратных операций реаллокации и копирования памяти.

Примеры реализации: Связный список (Linked List)

Хотите разобрать тему глубже? В нашем бесплатном курсе есть урок про линейный список на динамических объектах - с подробной теорией, задачами и проверочными вопросами.