воскресенье, 26 августа 2012 г.

Инверсия односвязного списка

Очень долго тупил над этой задачей. На практике проще использовать чтение списка с конца. Так что задача имеет больше учебный характер. Немного погуглив нашел решение с помощью рекурсии.


Node * reverse(Node *head)
{
        if (head == 0) return 0;
        if (head->next == 0) return head;

        Node * tmp = reverse(head->next);

        head->next->next = head;
        head->next = 0;
        return tmp;
}