Vi que si no pongo el & en los parametros de la funcion cuando pido lista L la funcion opera con los datos pero no hace cambios en la lista, a la vez, el tipo lista esta definido como puntero, por lo que creo que si la deberia modificar. Por eso no me termina de cerrar porque debe ir el &.
Hola Gerónimo,
pasar la lista L por referencia de la forma & L, te permite modificar el comienzo de la lista y que este cambio se haga a la variable que pasó como parámetro a la función. Es necesario para las modificaciones que hacés en el primer while. La asignación L=L->sig; se hace al la variable que es parámetro de entrada porque está el &, de lo contrario se haría a una variable local del mismo tipo (llamada L dentro de la función) y a la cual se copia el valor del parámetro con el que se invocó, es decir la dirección del primer nodo de la lista.
También, es debido a que se pasa por referencia L que no podés usarla para recorrer la lista en el segundo while, sino que usás aux. De lo contrario al finalizar la recorrida, el comienzo de la lista se habría modificado.
saludos