Estoy haciendo una función, donde te pasan unos registros y tienes que meterlos dentro de una Lista Enlazada. El codigo es el siguiente:
typedef struct empleados {
char apellidos[30];
char nombre[15];
int mes;
//char bufferRelleno[50000];
} tipoEmpleado;
ListaEnlazada RegistrosListaEnlazada(tipoEmpleado * empleados, int numEmpleados, int mesInf, int mesSup)
{
int i, temp;
tipoNodoRef indice, nuevo, aBorrar;
ListaEnlazada lst = NULL;
for(i=0;i<numEmpleados;i++){
if(empleados[i].mes > mesInf && empleados[i].mes < mesSup){
if((nuevo = (tipoNodoRef) malloc(sizeof(tipoNodo))) == NULL){
indice = lst;
while (indice != NULL){
aBorrar = indice;
indice = indice->sig;
free(aBorrar);
}
lst = NULL;
} else {
nuevo->info = empleados[i];
nuevo->sig = NULL;
indice = lst;
if(indice == NULL)
lst = nuevo;
else{
while(indice->sig != NULL)
indice = indice->sig;
indice->sig = nuevo;
}
}
}
}
return lst;
}
No da ningún error aparentemente, pero a la hora de imprimir los miembros de la lista enlazada tengo problemas. Hago lo siguiente, pero da error:
i=0;
indice = lst;
while(indice->sig != NULL){
i++;
printf("\nNODO <%d>\n",i);
printf("%c",(indice->info).apellidos);
printf("%c",(indice->info).nombre);
printf("%d",(indice->info).mes);
indice = indice->sig;
¿Alguien sabría como solucionarlo?
Dices que da error. ¿Qué error da?
Cita de: ivancea96 en 17 Junio 2015, 23:50 PM
Dices que da error. ¿Qué error da?
Se cierra el programa al ejecutarlo. El error está en la parte de mostrar la lista. Sin eso, el programa funciona bien.
A parte del error, que estaría bien que dijeses qué es exactamente, o en qué linea es, ese while es incorrecto. Debería ser un do{}while(); en todo caso. No accedes al último elemento de la lista. Tampoco sé los campos de ListaEnlazada, así que poco tengo que decir.