Cabecera de lista enlazada pasando doble puntero

He visto esto en algún libro / tutorial.

Cuando pasa el puntero del encabezado (de la lista vinculada) a una función, debe pasarlo como un puntero doble.

Por ejemplo: // Esto es para revertir una lista vinculada donde la cabeza apunta al primer nodo.

void nReverse(digit **head)
{
    digit *prev=NULL;
    digit *curr=*head;
    digit *next;

    while(curr!=NULL)
    {
        next=curr->next;
        curr->next=prev;
        prev=curr;
        curr=next;
    }
    *head=prev;
    return;
}

Esto funciona bien

También funciona cuando uso puntero único como,

void nReverse(digit *head)
{
    digit *prev=NULL;
    digit *curr=head;
    digit *next;

    while(curr!=NULL)
    {
        next=curr->next;
        curr->next=prev;
        prev=curr;
        curr=next;
    }
    head=prev;
    return;
}

Intenté imprimir la lista usando el puntero del cabezal. Ambas funciones funcionan bien.

Me estoy perdiendo de algo ?

Gracias,

Respuestas a la pregunta(5)

Su respuesta a la pregunta