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

Lista Circular

Estas en el tema de Lista Circular en el foro de Java en Foros del Web. Buenas tardes, Estoy realizando un proyecto sobre listas circulares entre las que tengo: - Clase LEG (lista) - Clase Nodo - Clase Principal (Main) - ...
  #1 (permalink)  
Antiguo 20/04/2016, 11:30
Avatar de pyros1889  
Fecha de Ingreso: agosto-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 0
Lista Circular

Buenas tardes,

Estoy realizando un proyecto sobre listas circulares entre las que tengo:

- Clase LEG (lista)
- Clase Nodo
- Clase Principal (Main)
- Clase Persona: con dni, nombre, fecha nacimiento.

En la clase Persona he implementado la clase Compare<Persona> y en la clase LEG, he extendido el compare<E>.

Mi problema es el cómo puedo recoger los datos de la Persona desde la lista ó principal.

Desde la Clase Principal (main), tengo que llamar a métodos como:

- Acceso: desde el cual introduzco un dni y me muestra los datos de la persona que coincida con ese dni.
- Suprimir: introducimos el dni y eliminamos ese nodo que coincida con la persona que tenga ese dni.

Pero como en la clase nodo y en la clase LEG no puedo hacer referencia a ningún dato de la clase Persona..no puedo hacerlo más que por el CompareTo.

Lo que me gustaría que me ayudasen, es en cómo puedo coger los datos de Persona desde LEG para realizar esos 2 métodos.


Muchas gracias de antemano a todo aquel/la que me pueda ayudar con esta duda
  #2 (permalink)  
Antiguo 20/04/2016, 15:54
 
Fecha de Ingreso: julio-2015
Mensajes: 85
Antigüedad: 9 años, 4 meses
Puntos: 4
Respuesta: Lista Circular

A ver si te sirve de algo esto.

Imagino que en tu clase LEG al menos tendras un atributo el cual guarde el primer nodo y dependiendo te tu tipo de lista tendras otro que guarda el nodo final (este es optativo dependera de otras cosas), tambien imagino que en tu clase Nodo tendras 2 atributos, uno que sera de tipo Persona o <T> generico (tambien te permite guardar personas) y el otro atributo sera de tipo Nodo que hace referencia al siguiente nodo, es decir, los estas "uniendo".

Si todo esto va segun creo en tu clase LEG tendras que tener un metodo que sea insertar en el cual iras generando la "cadena" de nodos, en el caso que esto fuese asi en tu Main necesitarias instanciar una lista sobre la cual realizaras todas las operaciones que tu necesitas.

Volvamos a la LEG tu necesitas acceder a los valores que contiene el nodo para eso tendras que hacer un bucle para recorrerlos todos empezando por el del atributo que mencionamos antes que guarda el primer nodo, teniendo ese se puede acceder a cualquier dato de personas, imaginemos desde LEG:
Código Java:
Ver original
  1. private Nodo inicio = null;
  2.  
  3. Public Persona getPersonByDni(String dni)
  4. {
  5.     If(inicio.getNodoSiguiente() != null){
  6.          
  7.            Nodo aux = inicio;
  8.           While(aux.getSiguiente() != null) {
  9.  
  10.                If(aux.getPersona().compareTo(dni)) {
  11.                      return aux;
  12.                 }
  13.                 else{
  14.                      aux = aux.getSiguiente();
  15.                 }
  16.  
  17.           }
  18.      }
  19.        return null;
  20. }
Si tienes todos los metodos necesarios en las clases podras llegar a hacer ese metodo en la Lista como veras no es muy complejo, en la ejecucion le entra el dni que se esta buscando y vas recorriendo todos mirando a ver si coincide.

Esto de los nodos al principio parece dificil pero veras que es facilisimo y repetitivo.

Etiquetas: circular, clase, lista
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 10:22.