Это продолжение предыдущей статьи, в которой мы переваривали все окружающие концепции, плюсы и минусы, сложность времени O, реальные варианты использования, в основном операции, а также все такая теория. Если вы еще не читали его, я рекомендую вам сначала прочитать.
Это серия пост структуры данных с реализацией в JavaScript с использованием спецификации ES6.
Цель этого поста – пройти через реализацию связанного списка. На самом деле, этот двухпост включает в себя сам связанный список, поскольку предыдущий пост указывает на это.
В следующем коде мы собираемся определить наш класс узлов с помощью его конструктора. Помните, что узел является основным строительным блоком для хранения данных и следующего указателя.
Этот класс должен будет справиться с созданием узла. Каждый раз, когда класс создается, конструктор несет ответственность за инициализацию двух свойств: данные и следующий.
Теперь задача состоит в том, чтобы создать следующие четыре узла, просто создание узлов, а не как их подключить.
По сути, мы должны создавать четыре раза класс узлов, чтобы создать четыре узла. На этом этапе нас не волнует второй параметр. Почему? Потому что в этот момент мы просто учимся создавать узел, не беспокоясь о том, как они будут соединяться вместе.
В предыдущем коде мы только что создали узлы независимо, сейчас пришло время научиться подключить их к сформированию связанного списка.
Итак, теперь мы определили класс узлов. Следующее следующее – определить новый класс, который должен будет обработать следующее свойство указателя и основные операции в связанном списке. Давайте создадим класс LinkedList.
n Приведенный выше код, мы только что определили класс под названием LinkedList с его конструктором. Это имеет работу по инициализации свойства головы для хранения первого узла и размера, чтобы отслеживать размер связанного списка.
Следующим следующим является предложение возможности вставить в голову, к хвосту или в любом случайном положении в списке.
Мы только что создали простой метод для добавления узлов в голову связанного списка. Мы передаем ему параметр данных и устанавливаем значение для this.head Свойство Создание нового экземпляра класса узлов. До сих пор давайте проведем некоторые тесты его реализации и увидим результаты.
Вывод будет следующим.
Мы только что научились добавлять узлы в голову. Итак, пришло время знать, как добавить узлы в хвост.
В Вышевнизированное время
Функция мы передаем параметр данных, а затем создали новый экземпляр класса узла. После этого мы проверяем, если голова пуста, если это так, сама голова будет установлена на новый узел, который мы сразу после того, как создали иное, установите хвост головой, а затем проберите связанный список, чтобы найти хвост и обновление Следующий указатель хвоста.
Наконец, мы увидим, как вставить новый узел в связанный список в данном случайном положении. Для этого мы должны пересечь список, пока не найдем желаемое положение.
Теперь мы собираемся проверить эту функцию, используя следующие тесты
Вывод будет этим. Как вы можете видеть, при данном индексе узел (600) был добавлен во втором индексе списка.
Ссылка GIST
Я надеюсь, что вы получили больше знаний о структуре данных и особенно с связанным списком. Это все сейчас.
Спасибо за чтение! Если эта история оказалась интересной, я бы очень признателен, если хотите, и поделился ею с друзьями. Я надеюсь добавить вам немного больше знаний. Поддерживаю и следуйте за мной мой блог и Середина
Оригинал: “https://dev.to/blarzhernandez/understanding-and-implementing-linked-lists-in-javascript-with-es6-implementation-4nif”