[C con Clase] comportamiento extraño lista generica

Manuel Lopez Blasi vladisblood en yahoo.com.ar
Jue Sep 25 22:58:42 CEST 2008


Buenas Gente, tengo un problema con lo siguiente:

Estoy intentado implementar una lista cuyos nodos estan definidos asi:

typedef struct _nodo * ptrANodo;
typedef ptrANodo Lista;

typedef struct _nodo {
   void *datos;
   ptrANodo siguiente;
} stNodo; 


es decir que yo puedo insertar "cualquier" tipo de dato en ella. Ahora bien, quiero insertarle un struct que tengo definido, digamos por ejemplo 

typedef struct _stEstructura{
tipo datosVarios
}stEstructura;

entonces llamo a mi funcion:

asi: Insertar(&lista,&estructura,funcionComparacion,1);

mi Insertar esta definido asi:

void Insertar(Lista *lista, void* dato,int (*funcionComp)(void*,void*,int),int criterioOrden) 

ptrANodo nuevo = NULL, anterior = NULL , aux = *lista;
   stTest *dato1s;
   stTest *dNodo;
   
   nuevo = (ptrANodo)malloc(sizeof(stNodo));
   
   nuevo->datos = (void*)dato;
   
   if(ListaVacia(*lista) || funcionComp( (*lista)->datos,nuevo->datos,criterioOrden)){
      
      
      nuevo->siguiente = *lista;
      
      *lista = nuevo;
      
   }
   else {
      
      anterior = aux;
      
      while(anterior->siguiente && !funcionComp( anterior->siguiente->datos,nuevo->datos,criterioOrden) ) 
         anterior = anterior->siguiente;
      
      nuevo->siguiente = anterior->siguiente;
      anterior->siguiente = nuevo;
   }

}

lo extraño es que antes de entrar en insertar() la lista tiene ciertos valores como datos, apenas entro a insertar() esta cambia a los valores que presisamente le estoy mandando casteados a void* , es decir mi estructura casteada a void*

Alguien tiene alguna idea??? ya le he dado mil vueltas pero no encuentro solucion.


Saludos, Muchas Gracias
 


Más información sobre la lista de distribución Cconclase