Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/05/2007, 04:33
Avatar de elAntonie
elAntonie
 
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Re: Ayuda Busqueda

Cita:
Iniciado por jmbertolotti Ver Mensaje
Tengo un problema con una busqueda.
public Comparable buscar(Comparable x)
{
if(x == null || (frente != null && frente.getInfo().getClass() != x.getClass())) return null;
Nodo p = frente;
while (p != frente)

{
if (x.compareTo(p.getInfo()) == 0)
{
return p.getInfo();
}
p= p.getNext();
}
return null;
}
La insercion funciona perfectamente , me muestra bien la informacion etc.
Cuando busco siempre me retorna null.
La primer linea de codigo:
if(x == null || (frente != null && frente.getInfo().getClass() != x.getClass())) return null;
Me permite controlar ciertas cosas sobre lo que va a entrar a la busqueda , eso funciona bien porque si lo comento me sigue saliendo null cuando busco.
Los objetos que busco tienen implementado Comparable por lo tanto el problema tampoco es ese .
Si alguno me tira una soga se lo voy a agradecer.
Saludos.

Wenas

Es que ni siquiera entra en el while

Nodo p = frente;
while (p != frente)

Asi que logicamente siempre devuelve null. Si usas esa condiccion lo logico es que uses un do -while.

Nodo p= frente;
do
{
vblablabla
p= next;
}while (p!=frente)

Saludos.

Pd. de todos modos yo no usaria los return dentro de un bucle. Usaria una variable auxiliar para saber si tengo que salir o no, y haria algo del estilo

p = frente;
encontrado = false
Nodo adevolver = null;
while (!encontrado && p!=final)
{
si son iguales encontrado = true;
sino p=next;
}

y se saldria del bucle bien porque ha llegado al final de la lista o bien porque lo ha encontrado
Si es por lo ultimo
if (encontrado)
adevolver = p;

return adevolver;

Es una idea.

Última edición por elAntonie; 25/05/2007 a las 04:39