Hola amigos, lo primero presentarme pues soy nuevo aquí: me llamo jose y tengo un pequeño gran problema con un programa en C.
Os explico:
Tengo definidas una serie de structuras de forma global el formato de una de estas estructuras es la siguiente:
typedef struct sRuta{
int numNodos;
int fitness;
int *vecino;
struct sRuta *next_ruta;
}LISTA_rutas;
Como podeis ver, esta estructura es una lista en lazada para almacenar una serie de rutas.
Por otro lado, en una de las funciones de las que se compone el siguiente programa hago la siguiente llamada a una función:
struct LISTA_rutas* macho;
macho = (LISTA_rutas*)creaNodo_ruta(inicio, inicioNodos, nDestino);
AHORA OS PONGO EL CODIGO DE LA FUNCION creaNodo_ruta:
struct LISTA_rutas *creaNodo_ruta(struct sNodo* inicio, struct sNodo* inicioNodos/*para mantener el comienzo del array*/, int nDestino)
{
int recorrido_v;
int sw_vec_directo = 0;
unsigned long siguiente;
sNodo *aux_ruta;
aux_ruta = inicio;
ruta = (struct sRuta*)malloc(sizeof(struct sRuta));
if (ruta == NULL)
printf ("NO TIRA");
ruta->numNodos = 1;
ruta->fitness = 0;
ruta->vecino = (int*)malloc(sizeof(int));
ruta->vecino[ruta->numNodos - 1] = inicio->nodoId;
while(aux_ruta->nodoId != nDestino)
{
ruta->numNodos++;
siguiente = (unsigned short)((rand()/(float)RAND_MAX)*aux_ruta->nEnlaces);
for (recorrido_v=0;recorrido_v<inicio->nEnlaces;recorrido_v++)
{
if(inicio->vecino[recorrido_v] == nDestino)
{
sw_vec_directo = 1;
siguiente = nDestino;
break;
}
}
if(sw_vec_directo == 0)
siguiente = aux_ruta->vecino[siguiente];
ruta->vecino = (int*)realloc(ruta->vecino, ruta->numNodos*sizeof(int));
ruta->vecino[ruta->numNodos-1] = siguiente;
aux_ruta = inicioNodos;
while (aux_ruta->nodoId != siguiente)
{
aux_ruta = aux_ruta->next;
}
}
ruta->next_ruta = NULL;
Calcular_ruta_equivalente (ruta);
return(ruta);
}
---------------------------------------------------------------------------------------
Tras esta llamada trato de acceder a los campos de la estructura LISTA_rutas *macho de la siguiente forma:
fitness_min_macho = macho->numNodos;
Al complilar me da los siguientes errores:
C:\Documents and Settings\aaa\Escritorio\PFC2\CODIGO\final.cpp(240) : error C2027: use of undefined type 'LISTA_rutas'
C:\Documents and Settings\aaa\Escritorio\PFC2\CODIGO\final.cpp(22) : see declaration of 'LISTA_rutas'
C:\Documents and Settings\aaa\Escritorio\PFC2\CODIGO\final.cpp(240) : error C2227: left of '->numNodos' must point to class/struct/union
Y no se por qué pasa.... ME dice que no tengo definido el tipo LISTA_rutas y que macho debe ser un puntero para utilizar el operador ->......
Si alguien puede echarme una mano se lo agradecería eternamente!!!!!!!!
Muchas Gracias de antemano!
Un saludo!!!!!!!!!!!!