Автор оригинала: Sarah Chima Atuonwu.
Если вы изучаете структуры данных, связанный список – это одна структура данных, которую вы должны знать. Если вы на самом деле не понимаете, или как он реализован в JavaScript, эта статья здесь, чтобы помочь вам.
В этой статье мы обсудим, какой связанный список, как он отличается от массива, и как реализовать его в JavaScript. Давайте начнем.
Что такое связанный список?
Связанный список – это линейная структура данных, аналогичная массиве. Однако, в отличие от массивов, элементы не хранятся в определенном месте или индексе памяти. Скорее каждый элемент – это отдельный объект, который содержит указатель или ссылку на следующий объект в этом списке.
Каждый элемент (обычно называемый узлами) содержит два элемента: хранятся данные и ссылка на следующий узел. Данные могут быть любыми действительными типами данных. Вы можете увидеть это, показанное на диаграмме ниже.
Точка входа в связанный список называется головой. Глава представляет собой ссылку на первый узел в связанном списке. Последний узел в списке указывает на NULL. Если список пуст, головка – это нулевая ссылка.
В JavaScript связанный список выглядит так:
const list = { head: { value: 6 next: { value: 10 next: { value: 12 next: { value: 3 next: null } } } } } };
Преимущество связанных списков
- Узлы могут быть легко удалены или добавлены из связанного списка без реорганизации всей структуры данных. Это одно преимущество, которое он имеет над массивами.
Недостатки связанных списков
- Поисковые операции медленные в связанных списках. В отличие от массивов, произвольный доступ элементов данных не допускается. Узлы доступны последовательно, начиная с первого узла.
- Он использует больше памяти, чем массивы из-за хранения указателей.
Типы связанных списков
Есть три типа связанных списков:
- Одно связанные списки : Каждый узел содержит только один указатель на следующий узел. Это то, о чем мы говорили до сих пор.
- Вдвойне связанные списки : Каждый узел содержит два указателя, указатель на следующий узел и указатель на предыдущий узел.
- Круговые связанные списки : Круговые связанные списки – это вариация связанного списка, в котором последний узел указывает на первый узел или любой другой узел перед ним, тем самым формируя цикл.
Реализация узла списка в JavaScript
Как уже говорилось ранее, узел списка содержит два элемента: данные и указатель на следующий узел. Мы можем реализовать узел списка в JavaScript следующим образом:
class ListNode { constructor(data) { this.data = data this.next = null } }
Реализация связанного списка в JavaScript
Ниже приведена код, показывает реализацию класса связанного списка с конструктором. Обратите внимание, что если узел головки не передан, головка инициализируется на NULL.
class LinkedList { constructor(head = null) { this.head = head } }
Положить все это вместе
Давайте создадим связанный список с классом, который мы только что создали. Во-первых, мы создаем два узла списка, Node1.
и node2.
и указатель из узла 1 к узлу 2.
let node1 = new ListNode(2) let node2 = new ListNode(5) node1.next = node2
Далее мы создадим связанный список с Node1
Отказ
let list = new LinkedList(node1)
Давайте попробуем получить доступ к узлам в списке, который мы только что создали.
console.log(list.head.next.data) //returns 5
Некоторые методы LinkedList
В ближайшее время мы реализуем четыре помощника методов подключенного списка. Они есть:
- размер()
- Чисто()
- GetLast ()
- getfirst ()
1. размер()
Этот метод возвращает количество узлов, присутствующих в связанном списке.
size() { let count = 0; let node = this.head; while (node) { count++; node = node.next } return count; }
2. Чисто()
Этот метод опустошает список.
clear() { this.head = null; }
3. GetLast ()
Этот метод возвращает последний узел связанного списка.
getLast() { let lastNode = this.head; if (lastNode) { while (lastNode.next) { lastNode = lastNode.next } } return lastNode }
4. getfirst ()
Этот метод возвращает первый узел связанного списка.
getFirst() { return this.head; }
Резюме
В этой статье мы обсудили, какой связанный список и как он может быть реализован в JavaScript. Мы также обсудили различные типы связанных списков, а также общие преимущества и недостатки.
Я надеюсь, что вам понравилось читать это.
Хотите получить уведомление, когда я публикую новую статью? кликните сюда .
Оригинал: “https://www.freecodecamp.org/news/implementing-a-linked-list-in-javascript/”