Hola, alguien me puede dar una ayuda con este código de insertar ordenado en una lista? , no logro comprender el nodo** lista, por que se pasa como doble puntero? que función cumple.
void insertar_ordenado (nodo** lista, elemento e){
nodo* actual;
nodo* anterior;
nodo* nuevo = malloc(sizeof(nodo));
nuevo->e=e;
actual=*lista;
anterior=NULL;
while(actual!=NULL && actual->e.dni < e.dni){
anterior=actual;
actual=actual->sig;
}
if(anterior!=NULL){
anterior->sig=nuevo;
nuevo->sig=actual;
}else{
nuevo->sig=*lista;
*lista=nuevo;
}
}
void insertar_ordenado (nodo** lista, elemento e){
nodo* actual;
nodo* anterior;
nodo* nuevo = malloc(sizeof(nodo));
nuevo->e=e;
actual=*lista;
anterior=NULL;
while(actual!=NULL && actual->e.dni < e.dni){
anterior=actual;
actual=actual->sig;
}
if(anterior!=NULL){
anterior->sig=nuevo;
nuevo->sig=actual;
}else{
nuevo->sig=*lista;
*lista=nuevo;
}
}