(RESUELTO)

Iniciado por TheShocker, 17 Junio 2015, 20:52 PM

0 Miembros y 1 Visitante están viendo este tema.

TheShocker

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?

ivancea96

Dices que da error. ¿Qué error da?

TheShocker

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.

ivancea96

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.