Si vos pasas de esta manera el puntero:
Código
cuando lista regrese al main no va a hacer ningun cambio, esto es porque el puntero se paso por valor. Podes hacer dos cosas: retornar una estructura como lo hic antes o pasar el puntero por referencia, ¿como? pasando la direccion del puntero
insertar_final(i,lista); // llamada a la funcion
Código
Fijate que creo un puntero auxiliar para recorrer la lista; esto es porque si vos usas el puntero lista vas a perder la referencia al primer nodo lo cual no es bueno... Cualquier duda segui pregutando
insertar_final(i,&lista); // paso la direccion ...................... void insertar_final(int i,L **lista) { L *ultimo; ultimo= nuevo_nodo(i); if(*lista==NULL) /* lista vacia */ *lista=ultimo; else { L *aux=*lista; /* creo un puntero auxiliar para q me recorra la lista */ while(aux->sig!=NULL) /* recorro la lista */ aux=aux->sig; /* cambia al siguiente nodo */ aux->sig=ultimo; /* el ultimo de la lista apunta a "ultimo" creado aca } }
Saludos