Связный список — это структура данных, состоящая из последовательности узлов, где каждый узел содержит значение и ссылку (или «ссылку») на следующий узел в последовательности. Связанные списки часто используются для реализации других структур данных, таких как стеки, очереди и деревья.
В JavaScript связанный список может быть реализован с использованием объектов и массивов. Каждый узел в связанном списке может быть представлен как объект со свойством value
и свойством next
, который является ссылкой на следующий узел в последовательности. Сам связанный список может быть представлен в виде массива узлов, где первый узел является началом списка, а последний узел — хвостом списка.
Вот пример создания связанного списка в JavaScript:
// Create the nodes for the linked list const node1 = { value: 1, next: null }; const node2 = { value: 2, next: null }; const node3 = { value: 3, next: null }; // Link the nodes together to form a linked list node1.next = node2; node2.next = node3; // Create an array to represent the linked list const linkedList = [node1, node2, node3];
В приведенном выше примере мы создаем три узла, каждый из которых содержит свойства value
и next
. Затем мы связываем узлы вместе, чтобы сформировать связанный список, устанавливая свойство next
каждого узла для ссылки на следующий узел в последовательности. Наконец, мы создаем массив для представления связанного списка, где первый элемент является началом списка, а последний элемент — хвостом списка.
Чтобы вставить новый узел в связанный список, нам сначала нужно найти правильную позицию для вставки узла. Обычно это делается путем обхода связанного списка, начиная с головы и переходя от одного узла к другому, пока мы не достигнем правильной позиции. Как только мы нашли правильную позицию, мы можем вставить новый узел, изменив свойство next
предыдущего узла, чтобы оно ссылалось на новый узел, и свойство next
нового узла, чтобы оно ссылалось на следующий узел в последовательности.
Вот пример вставки нового узла в связанный список в JavaScript:
// Create the new node to insert const newNode = { value: 4, next: null }; // Find the correct position to insert the new node let currentNode = linkedList[0]; let previousNode = null; while (currentNode.value < newNode.value) { previousNode = currentNode; currentNode = currentNode.next; } // Insert the new node into the linked list newNode.next = currentNode; previousNode.next = newNode; // Add the new node to the array representing the linked list linkedList.push(newNode);
В приведенном выше примере мы создаем новый узел для вставки в связанный список. Затем мы просматриваем связанный список, начиная с головы, пока не найдем правильную позицию для вставки нового узла. Как только мы нашли правильную позицию, мы вставляем новый узел, изменяя свойство next
предыдущего узла для ссылки на новый узел и свойство next
нового узла для ссылки на следующий узел в последовательности. Наконец, мы добавляем новый узел в массив, представляющий связанный список.
Чтобы удалить узел из связанного списка, нам сначала нужно найти правильную позицию удаляемого узла. Обычно это делается путем обхода связанного списка, начиная с головы и переходя от одного узла к другому, пока мы не достигнем правильной позиции. Как только мы нашли правильную позицию, мы можем удалить узел, изменив свойство next
предыдущего узла, чтобы он ссылался на следующий узел в последовательности, пропуская удаляемый узел.
Вот пример удаления узла из связанного списка в JavaScript:
// Find the correct position of the node to delete let currentNode = linkedList[0]; let previousNode = null; while (currentNode.value !== 2) { previousNode = currentNode; currentNode = currentNode.next; } // Delete the node from the linked list previousNode.next = currentNode.next; // Remove the node from the array representing the linked list const index = linkedList.indexOf(currentNode); linkedList.splice(index, 1);
В приведенном выше примере мы просматриваем связанный список, начиная с головы, пока не найдем правильную позицию удаляемого узла. Как только мы нашли правильную позицию, мы удаляем узел, изменяя свойство next
предыдущего узла, чтобы он ссылался на следующий узел в последовательности, пропуская удаляемый узел. Наконец, мы удаляем узел из массива, представляющего связанный список.