Чтобы инвертировать связанный список в JavaScript, вы можете использовать несколько методов. Вот несколько часто используемых подходов:
Метод 1: итеративный подход
function invertLinkedList(head) {
let prev = null;
let current = head;
while (current !== null) {
let temp = current.next;
current.next = prev;
prev = current;
current = temp;
}
return prev;
}
Метод 2: рекурсивный подход
function invertLinkedList(head) {
if (head === null || head.next === null) {
return head;
}
let newHead = invertLinkedList(head.next);
head.next.next = head;
head.next = null;
return newHead;
}
Метод 3: стековый подход
function invertLinkedList(head) {
const stack = [];
while (head !== null) {
stack.push(head);
head = head.next;
}
const newHead = stack.pop();
let current = newHead;
while (stack.length > 0) {
current.next = stack.pop();
current = current.next;
}
current.next = null;
return newHead;
}
Метод 4: подход на месте
function invertLinkedList(head) {
let prev = null;
let current = head;
while (current !== null) {
let next = current.next;
current.next = prev;
prev = current;
current = next;
}
return prev;
}
Это всего лишь несколько примеров того, как можно инвертировать связанный список в JavaScript. Каждый метод имеет свои преимущества и недостатки, поэтому вы можете выбрать тот, который лучше всего соответствует вашим требованиям.