Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/01/2007, 13:47
CarlaMedina
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 279
Antigüedad: 19 años
Puntos: 2
Exclamación Buscar un Elemento en una Lista

Hola a todos!

Tengo un problema con un código. Lo que quiero realizar es lo siquiente:
Tengo una lista, cada nodo tiene varios campos entre ellos uno llamado Estado que almacena un tipo definido por el usuario Direccion.

En el programa principal, un bucle que llama varias veces al método
Nodo n = listaelementos.buscarNodo(direccion DireBuscar);
Es decir, tengo un elemento de tipo dirección llamado DireBuscar, y he de buscar en la lista si existe algun nodo que tenga en su Estado esa misma dirección, en caso afirmativo devolver ese nodo, en caso negativo aux.

No consigo hacer que éste método funcione. Es más, consigo que funcione un numero determinado de veces, pero llega un punto que se mete en el método buscarNodo y no sale (recorre la lista infinitamente, es decir, si la lista tiene dos elementos, esta continuamente de uno al otro.)

Actualmente tengo este codigo:

public Nodo buscarNodo(Direccion d)
{

if (this.esVacia())
{
System.out.println("Lista vacia");
return null;
}

Nodo aux = n;

System.out.println("Nodo aux es: "+ aux.getEstado());

//Encontrado en la primera posicion
if (aux.getEstado().equals(d))
{
System.out.println("Encontrado en la primera posicion");
return aux;
}

aux = aux.getSiguiente();

if (aux != null)
{
System.out.println("Entramos aqui porque aux es != null");
while ( (aux != null) ) //&& (aux.getSiguiente() != null) )
{
//System.out.println(aux.getEstado());
if (aux.getEstado().equals(d))
{
return aux;
}
else
{
aux = aux.getSiguiente();
}
}
}

return null;

}

El caso es que durante varias veces que se llama al método lo hace perfectamente, al llegar a una (siempre la misma) falla. Se mete en el while y nunca sale.

Por favor llevo días atrancada en esto, muchas gracias me urge.