Связанные списки — это фундаментальные структуры данных, используемые в информатике и программировании. Инвертирование связанного списка предполагает изменение порядка элементов в списке на противоположный. В этой статье блога мы рассмотрим различные методы инвертирования связанного списка в JavaScript, а также приведем примеры кода.
Метод 1: итеративный подход
Итеративный подход предполагает обход связанного списка и изменение указателей для изменения порядка элементов.
function invertLinkedListIterative(head) {
let prev = null;
let current = head;
while (current !== null) {
let next = current.next;
current.next = prev;
prev = current;
current = next;
}
return prev;
}
Метод 2: рекурсивный подход
Рекурсивный подход предполагает рекурсивный обход связанного списка и изменение порядка элементов на обратный.
function invertLinkedListRecursive(head) {
if (head === null || head.next === null) {
return head;
}
let rest = invertLinkedListRecursive(head.next);
head.next.next = head;
head.next = null;
return rest;
}
Метод 3: стековой подход
Стековой подход предполагает использование структуры данных стека для изменения порядка элементов.
function invertLinkedListStack(head) {
let stack = [];
while (head !== null) {
stack.push(head);
head = head.next;
}
let newHead = stack.pop();
let current = newHead;
while (stack.length > 0) {
current.next = stack.pop();
current = current.next;
}
current.next = null;
return newHead;
}
Инвертирование связанного списка — обычная операция в программировании, и JavaScript предоставляет несколько подходов для достижения этой цели. В этой статье мы исследовали три метода: итеративный подход, рекурсивный подход и стековой подход. Каждый метод имеет свои преимущества и может подойти в зависимости от конкретного случая использования. Понимая эти методы, вы сможете уверенно манипулировать связанными списками и эффективно менять их порядок в JavaScript.