Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: TheShocker en 17 Junio 2015, 20:52 pm



Título: (RESUELTO)
Publicado por: TheShocker en 17 Junio 2015, 20:52 pm
Estoy haciendo una función, donde te pasan unos registros y tienes que meterlos dentro de una Lista Enlazada. El codigo es el siguiente:

Código:

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:

Código:
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?


Título: Re: Meter registros a una lista enlazada
Publicado por: ivancea96 en 17 Junio 2015, 23:50 pm
Dices que da error. ¿Qué error da?


Título: Re: Meter registros a una lista enlazada
Publicado por: TheShocker en 18 Junio 2015, 00:00 am
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.


Título: Re: Meter registros a una lista enlazada
Publicado por: ivancea96 en 18 Junio 2015, 01:06 am
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.