Reverse Linked List Recursively

Tengo un nodo definido en la lista vinculada como:

typedef struct abc
{
    int id;
    struct abc *next;        
}node;

Quiero invertir una lista vinculada de forma recursiva. Estoy pasando el puntero de la cabeza a la función. La definición de mi función se ve así:

node *reverseLinkedListRecursively(node *head)
{
    node *current;
    node *rest;
    if(head == NULL)
        return head;

    current=head;
    rest=head->next;

    if(rest == NULL)
    {
       return rest;
    }
    reverseLinkedListRecursively(rest);
    current->next->next=rest;
    current->next=NULL;
    return rest;
}

¿Cómo debo proceder? He implementado el enfoque iterativo.

Respuestas a la pregunta(4)

Su respuesta a la pregunta