Функция, выводящая элементы односвязного списка в обратном порядке

Пройдите список вперёд, сложите значения в стек, затем извлеките и напечатайте их в обратном порядке. Так не нужно менять связи списка или использовать глубокую рекурсию.

Короткий ответ

Что ответить на собеседовании

Пройдите список вперёд, сложите значения в стек, затем извлеките и напечатайте их в обратном порядке. Так не нужно менять связи списка или использовать глубокую рекурсию.

Подробный разбор

Ответ с пояснениями

Условие

Создайте функцию, которая принимает на вход односвязный список и печатает его элементы, начиная с последнего и двигаясь к первому.

Ответ

Пройдите список вперёд, сложите значения в стек, затем извлеките и напечатайте их в обратном порядке. Так не нужно менять связи списка или использовать глубокую рекурсию.

function printReverse(head) {
  const values = [];
  for (let node = head; node !== null; node = node.next ?? null) {
    values.push(node.value);
  }
  for (let index = values.length - 1; index >= 0; index--) console.log(values[index]);
}

Предполагается узел вида { value, next }, пустой список — null, циклов нет. Для потенциально циклических данных понадобится проверка посещённых узлов. Время O(n), память O(n). Рекурсивный вариант печатал бы после возврата из next, но может переполнить стек на длинном списке.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее