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,