Foros del Web » Programación para mayores de 30 ;) » Java »

Buscar un Elemento en una Lista

Estas en el tema de Buscar un Elemento en una Lista en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/01/2007, 13:47
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 279
Antigüedad: 18 años, 11 meses
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.
  #2 (permalink)  
Antiguo 12/01/2007, 14:18
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
Re: Buscar un Elemento en una Lista

estas segura que tu metodo getSiguiente esta funcionando correctamente? por que pues si dices que se queda ahi en el while, es por que el metodo siempre te esta regresando una nodo..... asi a simple vista parece ser que el error lo tienes en ese metodo

have funnnnnn
  #3 (permalink)  
Antiguo 13/01/2007, 03:20
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 279
Antigüedad: 18 años, 11 meses
Puntos: 2
Exclamación Re: Buscar un Elemento en una Lista

Tengo definido en cada nodo un campo:
private Nodo siguiente;

Y luego el método te devuelve el siguiente:
public Nodo getSiguiente()
{
return siguiente;
}

Lo hace bien muchas veces y al llegar a una, recorre la lista una y otra vez y nunca sale :(
  #4 (permalink)  
Antiguo 13/01/2007, 16:44
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 279
Antigüedad: 18 años, 11 meses
Puntos: 2
Re: Buscar un Elemento en una Lista

Hola....

He aislado mi problema, realmente no era ese método, sino el anterior el que me lo pone a infinito...

Veamos, tengo la lista la ultima posicion tiene en su estado un determinado valor, y si quiero añadir un nuevo nodo con el mismo estado, es cuando va al metodo setSiguiente , supuestamente va solo una vez ..(comprobado...) pero lo añade infonitas veces pq luego lo visualizo...

No sé, solo falla en este caso, Que lo que añado es igual al último valor...
El método que tengo para añadir al final de la lista es:

public void anadirNodo(Nodo nuevo)
{
Nodo aux = n;

if((n == null) || (n.getEstado() == null))
n = nuevo;
else
{
while(aux.getSiguiente() != null){
aux = aux.getSiguiente();
}
aux.setSiguiente(nuevo);
}
}


Muchas Gracias...

Última edición por CarlaMedina; 13/01/2007 a las 17:03
  #5 (permalink)  
Antiguo 13/01/2007, 20:21
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
Re: Buscar un Elemento en una Lista

pudieras poner toda tu clase? pues hay es dificil comprender por porciiones

have funnnnnnnnnnnnnnn
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:12.