Пройдите список вперёд, сложите значения в стек, затем извлеките и напечатайте их в обратном порядке. Так не нужно менять связи списка или использовать глубокую рекурсию.
Функция, выводящая элементы односвязного списка в обратном порядке
Пройдите список вперёд, сложите значения в стек, затем извлеките и напечатайте их в обратном порядке. Так не нужно менять связи списка или использовать глубокую рекурсию.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте функцию, которая принимает на вход односвязный список и печатает его элементы, начиная с последнего и двигаясь к первому.
Ответ
Пройдите список вперёд, сложите значения в стек, затем извлеките и напечатайте их в обратном порядке. Так не нужно менять связи списка или использовать глубокую рекурсию.
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, но может переполнить стек на длинном списке.