Как перевернуть связанный список?

 Node reverse(Node head) {
    Node previous = null;
    Node current = head;
    Node forward;

    while (current != null) {
        forward = current.next;
        current.next = previous;
        previous = current;
        current = forward;
    }

    return previous;
}

Как именно он переворачивает список? Я понимаю, что сначала он устанавливает второй узел на вперед . Затем он говорит, что current.next равен нулевому узлу предыдущему . Затем он говорит, что предыдущий теперь текущий . Наконец, текущий становится вперед ?

Кажется, я не могу понять это и то, как это происходит в обратном направлении. Может кто-нибудь объяснить, как это работает?

18
задан Aquarius_Girl 18 June 2014 в 05:40
поделиться