Yung L. Leung
Здание из Простые алгоритмы и структуры данных в JS , здесь мы посмотрим на структуры данных за пределами массивов и объектов ключей, за пределами «меченных и депозитных» ящиков. Как дорога по пути, связанные списки , Стеки & очереди прямыми способами перемещения из одной единицы данных к следующему.
Связанные списки
А Связанный список как набор ящиков, прикованных вместе и хранится в темной комнате. Чтобы добраться до одной коробки, требуется начать на одном конце (голова или хвоста) и следуя ссылкам, из одной коробки к следующему. При прибытии в любую коробку вы указываетесь на направление следующей коробки. Там нет индекса действовать в качестве руководства по прыжкам на одну коробку.
Вы можете легко Неприносимость или толчок «Ящики» к голове или хвосту связанного списка. Вы также можете легко Сдвиг или поп Выкл «коробки» от головы или хвоста. Голова или хвост легко доступны. Но к Вставить или Удалить «Ящики» вдоль тела этого связанного списка, к Установить Предметы в «коробке», которая находится за пределами головы или хвоста, сложнее. Это требует начать с головы (или хвоста) и перемещения из текущей «коробки» к следующему, прежде чем вы можете Получить до желаемой “коробки”.
А Одно связанный список это односторонний связанный список. Это означает, что вы можете двигаться вперед из головы на хвост. Сложность для Неприносимость & Сдвиг является постоянным ( O (1) ). Это связано с тем, что добавление «коробки» или удаления его с самого начала требуется только доступ к главе списка. Сложность для толчок «коробка» до конца тоже O (1) По аналогичной причине хвост сразу доступен.
Но к поп Выкл. n Количество «ящиков» требует n Количество шагов (операций), чтобы достичь второго до последнего «коробки» и переназначить его как новый хвост. Точно так же, чтобы Вставить/удалить «коробка» или на Получить/набор Предметы в любой «коробке» вдоль тела списка требуют путешествия с головы, и поэтому их сложности в целом На) .
А Список вдвойне связан это двусторонний связанный список. Это означает, что вы можете двигаться вперед с головы или хвоста. Преимущество состоит в том, что оба головы и хвоста легко доступны для добавления «ящиков» или удаления «ящиков». Сложность для Неприносимость , Сдвиг , толчок или поп это O (1) . Новый хвост, необходимый для выскакивания хвоста, достижимо от токового хвоста.
Еще одно преимущество возможности путешествовать с двух разных конечных точек (голова или хвоста), это то, что для Вставить/удалить Любая «коробка» или Получить/набор «Предметы» в «коробке» вдоль тела списка занимают половину времени по отдельно связанным списке. То есть их сложности являются половина O (n) Отказ Если «Box» или «item» находится в 2-й половине списка, путешествие с хвоста не потребует путешествия через 1-й половину списка. Обратное тоже верно. Хотя, O (1/2 n) имеет тенденцию быть упрощенным как O (n) Отказ
Стеки
А стек это куча предметов аккуратно расположена на вершине друг друга. Новый предмет может быть толкнул На вершину стека, по одному, здание до высоты стека. Отрадно, каждый предмет может быть Выскочил Выкл, один за раз, от верхней части стека. Последний элемент в том, что всегда первый товар ( lifo ).
Поскольку стек работает по процессу LIFO, сложность для толчок предмет в верхней части стека или на поп Выкл это постоянная O (1) . Верхняя часть стека легко доступна.
Очередь
А очередь это линия предметов, аккуратно расположена рядом друг с другом. Новый предмет может быть Снаряжение до конца линии, по одному, удлиняющему линию. Отрадно, каждый предмет может быть Взыскание от передней части линии, по одному. Первый элемент в том, что всегда первый товар ( FIFO ).
Поскольку спереди и конец линии легко доступны, очередь enqueue & Dequeue иметь сложность O (1) Отказ
Спасибо за прочтение!
Ссылка:
https://www.udemy.com/js-algorithms-and-data-structures-masterclass/
Оригинал: “https://www.freecodecamp.org/news/linear-data-structures-linked-lists-stacks-and-queues-in-javascript-a13c7591ad87/”