El problema surge cuando empiezo a llenar las listas leyendo un archivo de entrada. La lista de deportes se carga sin problemas, pero cuando voy a la lista de atletas, específicamente a la parte donde busco los deportes que practica y los enlazo a la lista de deportes, se produce un error no se de que tipo que me crea un ciclo infinito! Es algo sencillo en teoria, por cada atleta en el archivo, buscare entre otras cosas los deportes que practica, asi que por cada deporte practicado buscare en la lista de deportes para encontrar el nodo respectivo y enlazarlo al arreglo de deportes practicados del atleta actual. (Porque guardo la cantidad de deportes practicados en un arreglo).
Código C++:
Ver original
int encontrados=0; //While que recorre la lista de deportes para ubicar los nodos requeridos y enlazar los elementos pertinentes lista_deportes.posicion= lista_deportes.l; while ((lista_deportes.posicion!=NULL) && (encontrados!=practica)) { cout<<" EN EL WHILE: ATLETAS "<<lista_deportes.posicion->contenido->getNumatletas()<<endl; cout<<" EN EL WHILE: MEDALLAS "<<lista_deportes.posicion->contenido->getMedallas()<<endl; cout<<" EN EL WHILE: ID "<<lista_deportes.posicion->contenido->Id<<endl; //UNA SIMPLE INSTRUCCION DE ACCESO DA EL ERROR! (Agregando el atleta numero 6, cuando nos ubicamos en el deporte //siguiente a futbol. ¿Memoria llena? cout<<" EN EL WHILE: NOMBRE! "<<lista_deportes.posicion->contenido->getNombre()<<endl; //For que compara cada deporte con el arreglo de deportes practicados for (int buscador=0; buscador<practica; buscador++) { cout<<" A buscar: "<<Nombre_disciplina[buscador]<<endl; if (lista_deportes.posicion->contenido->getNombre()==Nombre_disciplina[buscador]) { //Insertamos el deporte a la lista de deportes practicados atleta_aux.addDeporte (lista_deportes.posicion->contenido); //Insertamos el atleta a la lista de practicantes lista_deportes.posicion->contenido->addAtleta(&atleta_aux); cout<<"Encontre a "<<lista_deportes.posicion->contenido->getNombre()<<endl; encontrados++; } } lista_deportes.posicion= lista_deportes.posicion->next; } lista_atletas.AgregarNodo (atleta_aux);
Es como si al accesar a ese nodo, justo en ese campo (solo pasa cuando trato de obtener el nombre!) pasara algo con la memoria. Hablo de la parte donde comento que ese es la operacion que genera el error.
Cabe destacar, que el codigo funciona perfectamente para los primeros 5 atletas, e incluso logra ubicar los primeros 3 deportes que practica el 6to atleta, pero cuando va a buscar el 4to deporte cae en el ciclo infinito. La lista esta perfecta, no hay problemas con datos que no existen ya que he comprobado todo eso y todo esta en su lugar.
¿Alguien tiene alguna idea?
De antemano gracias por su tiempo y por leer esto!