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

Обозначение Big-O

access: O(n)
search: O(n)
insert: O(1)
delete: O(1)

Доступ и поиск довольно медленные, так как узлы связаны один за другим, в отличие от массивов, где есть индексы или хэш-таблицы, где есть ключи.

Вставка и удаление выполняются быстро, как в начале, так и в конце.

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

Односвязный список содержит узлы, которые имеют только одну ссылку (следующий узел), а двусвязный список содержит ссылку в противоположном направлении.

Это позволяет разработчикам настраивать структуру данных в зависимости от того, что ценнее, время или память.

Допустим, вы хотите вставить данные в 7-й индекс в связанных списках из 8 элементов. Для односвязного списка у вас нет другого выбора, кроме как пройти по списку от 0-го индекса до 7-го индекса, так как есть только ссылка на следующий узел.

Двусвязные списки позволяют мне перемещаться в обратном направлении, делая временную сложность O(n)/2. Понятие Big-O упростит это до O(n), но в таком случае использование двусвязного списка имеет явное преимущество. Но сложность пространства увеличивается, поскольку каждому узлу необходимо хранить дополнительную переменную.

Вот мой пользовательский односвязный список в Javascript.