Dos cosas:
Si estás escribiendo siempre en el último nodo es porque esa función no está funcionando como es debido.
Código C++:
Ver originalprintf("Ingrese el DNI a modificar: \n"); scanf ("%d", &elemento.
DNI);
/*Buscar elemento*/
nodo2 = buscar (lista, elemento);
/*Modificar nodo*/
printf("Ingrese el nuevo valor del DNI (Si lo quiere dejar igual ponga el mismo): \n"); scanf ("%d", &elemento2.
DNI); printf("Ingrese el nuevo valor de la Edad (Si lo quiere dejar igual ponga el mismo): \n"); scanf ("%d", &elemento2.
Edad); printf("Ingrese el nuevo valor del Promedio (Si lo quiere dejar igual ponga el mismo): \n"); scanf ("%f", &elemento2.
PromedioCalif);
nodo2 = modificarElemento(nodo2, elemento2);
¿Por qué usas un nodo temporal? Es algo que te puedes ahorrar:
Código C++:
Ver originalint dni;
printf("Ingrese el DNI a modificar: \n");
/*Buscar elemento*/
nodo2 = buscar (lista, dni); // Ahora el segundo parámetro de la función es un int
/*Modificar nodo*/
printf("Ingrese el nuevo valor del DNI (Si lo quiere dejar igual ponga el mismo): \n"); scanf ("%d", &nodo2
->DNI
); printf("Ingrese el nuevo valor de la Edad (Si lo quiere dejar igual ponga el mismo): \n"); scanf ("%d", &nodo2
->Edad
); printf("Ingrese el nuevo valor del Promedio (Si lo quiere dejar igual ponga el mismo): \n"); scanf ("%f", &nodo2
->PromedioCalif
);
//nodo2 = modificarElemento(nodo2, elemento2); Esta llamada sobra