Esta función me falla y no sé donde falla
Llevo unos dias dandole vueltas a esta función q me falla y no sé donde!!, el código me compila bien, pero cd hago la prueba me sale la lista vacía!!, me gustaría q alguien la mirarse y encontrarse el error!!
La función d Intercción d dos listas:
TIPO_LISTA Interseccion (TIPO_LISTA l, TIPO_LISTA m)
{
TIPO_LISTA n;
POSICION p,q;
if(NumElementos(l)==0 || NumElementos(m)==0)
return NULL;
n=Crear();
p=Primero(l);
q=Primero(m);
while (p!=NULL)
{
while (q!=NULL)
{
if (Elemento(p).dato==Elemento(q).dato)
Insertar(n,Primero(n),Elemento(p));
q=Siguiente(q);
}
p=Siguiente(p);
}
return n;
}
La función d Intercción d dos listas:
TIPO_LISTA Interseccion (TIPO_LISTA l, TIPO_LISTA m)
{
TIPO_LISTA n;
POSICION p,q;
if(NumElementos(l)==0 || NumElementos(m)==0)
return NULL;
n=Crear();
p=Primero(l);
q=Primero(m);
while (p!=NULL)
{
while (q!=NULL)
{
if (Elemento(p).dato==Elemento(q).dato)
Insertar(n,Primero(n),Elemento(p));
q=Siguiente(q);
}
p=Siguiente(p);
}
return n;
}
puede que sea una tonteria, pero estas segura de que la funcion insertar funciona correctamente?? a lo mejor el fallo esta ahi, ya que dices que la lista siempre sale vacia; de todos modos, que argumentos le pasas a esa funcion insertar?? no entiendo por qué es necesario pasarle Primero(n)
un aficionado :)
un aficionado :)
Pienso igual que mi compi JohnCooper, me parece que tu mecanismo es bueno, pero como no conozco las funciones a las que llamas, yo lo abordaría así: a parte de poner muchas trazas, comprueba la función Primero al asignar los valores a "p" y "q", lo que no entiendo tampoco por qué en la función Insertar de le pasas Primero(n) siempre, ¿qué hace insertar siempre en la primera posición de la lista el elemento?si es así,¿desplazas bien los elementos anteriores? No se me ocurre nada más, lo siento. Suerte de otro aficionado.
