Рубрики
Без рубрики

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

Если вы изучаете структуры данных, связанный список – это одна структура данных, которую вы должны знать. Если вы на самом деле не понимаете, или как он реализован в JavaScript, эта статья здесь, чтобы помочь вам. В этой статье мы обсудим, что такое связанный список, как Это

Автор оригинала: 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

В ближайшее время мы реализуем четыре помощника методов подключенного списка. Они есть:

  1. размер()
  2. Чисто()
  3. GetLast ()
  4. 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/”