Инвертирование связанного списка в JavaScript: методы и примеры

Чтобы инвертировать связанный список в 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. Каждый метод имеет свои преимущества и недостатки, поэтому вы можете выбрать тот, который лучше всего соответствует вашим требованиям.