• + 4 comments

    C solution with recursion:

    Node* Reverse(Node *head)
    {
        if (head == NULL || head->next == NULL) {
            return head;
        }
    
        Node* nextNode = head->next;
        head->next = head->prev;
        Node* newHead = Reverse(nextNode);
        nextNode->next = head;
        return newHead;
    }