В JavaScript не так много встроенных структур данных, которые есть в других языках, таких как Java, поэтому может быть сложно понять, как использовать их в JavaScript, если это ваш текущий язык. Этот пост призван демистифицировать современный связанный список JavaScript таким образом, чтобы это имело смысл для интервью и быстрого решения проблем.
Для краткого обзора связанные списки — это структура данных, в которой каждый узел содержит значение и указывает на один другой узел. Он заканчивается на узле, который указывает на ноль, а не на другой узел.
1 — › 2 — › 3 — › 4 — › нет
Чтобы использовать связанные списки, вы можете создать свой собственный класс связанного списка, а затем свой собственный класс узла, и дополнить свой класс связанного списка всеми существующими методами. Но есть способ проще:
class Node { constructor(value, next=null){ this.value = value; this.next = next; } }
Используя эту сборку класса Node, создать новый связанный список так же просто:
let root = new Node(1); root.next = new Node(2); root.next.next = new Node(3); root.next.next.next = new Node(4);
Четвертый узел автоматически укажет на ноль, так как это значение по умолчанию параметра «следующий».
Теперь у вас есть быстрый способ создать связанный список, когда вас попросят сделать что-то вроде реверсирования связанного списка на месте:
function reverse(head) { let current = head; let previous = null; while (current) { temp = current.next; current.next = previous; previous = current; current = temp; } return previous; }
Я надеюсь, что это поможет демистифицировать проблемы связанных списков при использовании JavaScript!