Как развернуть linked list?

Middle
268 просмотров
AFK Offer AI

Нужны три указателя: prev, current, next. На каждом шаге: сохраняем next = current.Next, разворачиваем ссылку current.Next = prev, сдвигаем prev = current, current = next. Когда current == nil, prev — новая голова. O(n) времени, O(1) памяти. Рекурсивный вариант тоже спрашивают, но он O(n) по памяти из-за стека. В Go нет встроенного linked list (container/list есть, но его редко используют). Обычно определяют struct с полем Next.

Следующий вопрос

Что такое goroutine leak в production?