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

Uso de Listas en Java no me entran!!

Estas en el tema de Uso de Listas en Java no me entran!! en el foro de Java en Foros del Web. Hola a todos, bueno vengo a ustedes con una duda de las Listas enlazadas simples y dobles.... Ya me leí los documentos que explican listas ...
  #1 (permalink)  
Antiguo 21/10/2010, 14:44
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Uso de Listas en Java no me entran!!

Hola a todos, bueno vengo a ustedes con una duda de las Listas enlazadas simples y dobles....

Ya me leí los documentos que explican listas en las FAQ pero no entiendo en primera como es que se ligan los nodos....


En primera quiero saber que son los Nodos, son acaso espacios de memoria? o que son?, se que por ejemplo pueden tener un campo para la info, otro para los enlaces con otros nodos...

Pero como se define en código un nodo??, como le asigno información a un nódo? y como enlazo un nodo A con otro nodo B??? y como recorro los elementos de la lista apra imprimirlos??

En el faq esta muy escueto, casi nomas dejan el codigo para analizar pero la neta no veo ni que pex, usualmente ponen en una clase los nodos, en otra ponen los metodos, y en otra usan las clases, podrian hacer un codigo muuuy explicativo (nombre de variables faciles) y en una misma clase o en un mismo código usar las listas, nodos y eso?

Gracias de antemano, he buscado en internet, he visto diapositivas que suben de escuelas pero no puedo concebirlos :S

Nos vemos y gracias...
  #2 (permalink)  
Antiguo 21/10/2010, 16:56
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Uso de Listas en Java no me entran!!

Un nodo es un concepto, imagina un archivo html, en el tienes información y enlaces a otras páginas, pues eso es un nodo. Los archivos html no están sueltos en internet, sino que un conjunto de ellos forman un sitio web, de forma que de un html puedes pasar a otro sin conocer su url, pues eso es una lista de nodos.

En el caso de java, un nodo es una clase cualquiera que creas, con unos campos dedicados a guardar información, y otro(s) campo(s) que apunta a otro objeto de la clase que has creado, que a su vez contiene información y un enlace a otro nodo, de forma que a partir de uno, puedes avanzar al siguiente y así sucesivamente.

Si en la clase sólo tienes un enlace a otro nodo (el siguiente), tendrás una lista enlazada simple, ya que puedes ir avanzando de nodo en nodo, pero no puedes volver al último que visitaste.

Si en el último tiene un enlace al primero, tendrás una lista circular.

Si en cada nodo tienes dos enlaces, uno al siguiente, y otro al anterior, entonces tendrás una lista enlazada doble.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 22/10/2010, 23:00
 
Fecha de Ingreso: septiembre-2010
Mensajes: 41
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Uso de Listas en Java no me entran!!

creeme que a mi tambien me costo mucho aprender eso de listas enlazadas en java. primero hay que aprender bien el concepto de clases. pero si queres aprender bien las listas enlazadas, te recomiendo el libro del autor Luis Joyanes, "Programacion en java". esta con dibujos, explica claramente el concepto de nodos, referencias y como enlazar todo.. (http://www.megaupload.com/?d=P46CZKU8)
  #4 (permalink)  
Antiguo 23/10/2010, 13:48
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Uso de Listas en Java no me entran!!

Gracias, por su ayuda ya masomenos me da una idea aunque no me queda muy claro...

Cita:
Iniciado por Xerelo Ver Mensaje
Un nodo es una clase cualquiera que creas, con unos campos dedicados a guardar información, y otro(s) campo(s) que apunta a otro objeto de la clase que has creado
entonces algo asi defino un nodo??:

Código PHP:
public class Nodo1{
    
//ok pongo el apuntador o la liga pal otro nodo2
    
public Nodo1 liga1

    
// pongo el o los datos que almacena este nodo1 vdd 
    
public String A="Soy el Nodo 1"

    
//en el metodo constructor le doy valor a Liga, pero que valor le doy? como hago pa ligarlo al 2?
    
public Nodo1(){ 
        
liga = ???;
    } 
 
}
// Finaliza la clase del Nodo 1

public class Nodo2{
//suponiendo que este nodo lo voy a ligar con un nodo3..
public Nodo2 liga2;

//datos de este nodo2
public String B="Soy el Nodo2";

no se si este correcto y ademas como ven esta incompleto, no comprendo como los voy a ligar, y para acceder a su informacion de cada nodo desde mi metodo principal como hago??


DaveG intente bajar el libro del link que me distes dice que esta temporalmente desactivado el link, asi ke lo buscare gracias por la ayuda muchachos, y espero y me puedan explicar con manzanitas :S
  #5 (permalink)  
Antiguo 23/10/2010, 14:15
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Uso de Listas en Java no me entran!!

No hay una clase por cada nodo, hay una clase para todos los nodos.

Código Javascript:
Ver original
  1. public class Nodo{
  2.     //ok pongo el apuntador o la liga pal otro nodo2
  3.     public Nodo liga1;
  4.  
  5.     // pongo el o los datos que almacena este nodo1 vdd
  6.     public String A;
  7.  
  8.     //en el metodo constructor le doy valor a Liga, pero que valor le doy? como hago pa ligarlo al 2?
  9.     public Nodo(String a){
  10.         this.liga = a;
  11.     }  
  12.  
  13. }

Cita:
en el metodo constructor le doy valor a Liga, pero que valor le doy? como hago pa ligarlo al 2?
Lógicamente si quieres que liga1 apunte a un nodo en concreto, tendrás que pasarle ese nodo como parámetro, ya sea en el constructor, o mediante un método.

Cita:
para acceder a su informacion de cada nodo desde mi metodo principal como hago??
Igual que lees cualquier otro atributo de un objeto, por ejemplo tu string A.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #6 (permalink)  
Antiguo 25/10/2010, 17:44
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Uso de Listas en Java no me entran!!

oooo pues no la capto bien :|...

ene sta parte que pones:

public Nodo(String a){
this.liga = a;
}

lo que haces es que? ligar a A??
  #7 (permalink)  
Antiguo 26/10/2010, 01:58
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Uso de Listas en Java no me entran!!

Eso está mal, me equivoqué en el copy/paste


Cita:
public Nodo(String a){

this.A= a;

}
Eso es lo correcto.

Cuando crees el nuevo nodo, tendrás que asignárselo a liga1.
Cita:
Nodo1 nuevoNodo = new Nodo1("Nuevo");
tunodo.liga1 = nuevoNodo;
Puedes hacerlo así, aunque lo recomendable es que crees métodos get y set para hacer esto

Cita:
public void setLiga1(Nodo1 nuevo){
this.liga1 = nuevo
}
entonces para añadir el nuevo nodo (ya creado con un new)

tunodo.setLiga1(nuevoNodo)
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #8 (permalink)  
Antiguo 26/10/2010, 09:08
 
Fecha de Ingreso: julio-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 173
Antigüedad: 19 años, 9 meses
Puntos: 15
Respuesta: Uso de Listas en Java no me entran!!

Hola Zero0097,

me parece que aún tenes difuso el concepto de clase y objeto (o instancia de clase), y yo iría primero a atacar ese problema antes de ir a los nodos en sí.

No te lo explico con Manzanitas, pero podria servir el ejemplo con Autitos:

Código PHP:
Class Auto {
   public 
String nombre;
   public 
Auto siguienteAuto;

Esta es la unica clase que necesitas, no necesitas hacer varias clases Auto1, Auto2, sino que lo que necesitas son instancias de esa clase.

En tu metodo principal...

Código PHP:
main() {
Auto auto1 = new Auto();
auto1.nombre"Toyota corolla";

Auto auto2 = new Auto();
auto2.nombre "Ford mondeo";

Auto auto3 = new Auto();
auto3.nombre "Citroen c4";

// creas cuantos autos quieras.

Y despues haces los enlaces.
auto1.siguienteAuto=auto2;
auto2.siguienteAuto=auto3;

// auto3 no tiene siguiente, con lo cual sera null, y sera el fin de la lista.
// despues partiendo desde auto1, solo te quedaría empezar a iterar los autos. Pero 1ro fijate si entendes estos conceptos de clase, e instancias.



Si comprendiste esto, se puede hacer el ejemplo un poco mejor. Separando el concepto de Nodo, con el Auto... ya que un nodo de lista enlazada, podria contener autos, manzanas, o lo que sea :).



Código PHP:
//por un lado tenemos la clase Auto:
Class Auto {
   public 
String nombre;
   public 
String puertas;
   public 
String modelo;
   
//etc...

}

// y aqui tenemos el nodo que por ahora alberga informacion de un auto
Class Nodo {
   public 
Auto auto;
   public 
Nodo siguiente;
}

main () {
Auto auto1 = new Auto();
auto1.nombre"Toyota corolla";
Auto auto2 = new Auto();
auto2.nombre "Ford mondeo";
Auto auto3 = new Auto();
auto3.nombre "Citroen c4";


Nodo nodo1 = new Nodo();
nodo1.auto auto1;
Nodo nodo2 = new Nodo();
nodo2.auto auto2;
Nodo nodo3 = new Nodo();
nodo3.auto auto3;


nodo1.siguiente nodo2;
nodo2.siguiente nodo3;

Espero te sirva! Saludos!!
__________________
apuntes unlam apuntes, modelos de parcial, final, foros.
relaciones de pareja - dudas de amor, sexo, noviazgo y más.
  #9 (permalink)  
Antiguo 28/10/2010, 06:09
 
Fecha de Ingreso: noviembre-2008
Mensajes: 59
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Uso de Listas en Java no me entran!!

Xous, puedes decirlo más alto, pero más claro imposible.
  #10 (permalink)  
Antiguo 28/10/2010, 11:41
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Uso de Listas en Java no me entran!!

Muy cierto Xous, mas claro imposible, asi queria una explicacion, es perfecta ora si que hasta un morro de kinder le entiene jeje

muchas gracias, y tienes razon, lo que es objeto aun no lo comprendo bien, el asunto es que me dieron mal las bases cuando entre a sistemas, casi todo el grupo empezo mal, al ultimo nos pasaron casi por compromiso, y ahora en estructura de datos que vemos las lsitas no les allo, y estamos empezando arboles :S...

muchas gracias por la explicacion, trataré de hacer un ejercicio, haber si me sale y volvere con mas preguntas jeje gracias
  #11 (permalink)  
Antiguo 28/10/2010, 12:23
 
Fecha de Ingreso: julio-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 173
Antigüedad: 19 años, 9 meses
Puntos: 15
Respuesta: Uso de Listas en Java no me entran!!

Muy bien zero0097, espero te sirva, y suerte con eso!! Cualquier cosa consulta.

napartar, gracias por el aliento!

slds.
__________________
apuntes unlam apuntes, modelos de parcial, final, foros.
relaciones de pareja - dudas de amor, sexo, noviazgo y más.
  #12 (permalink)  
Antiguo 31/10/2010, 19:53
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Uso de Listas en Java no me entran!!

Bueno he hecho un ensayo, me trabe en una parte de tu codigo, me marcaba error en la 3era linea:

1 Class Auto {
2 public String nombre;
3 public Auto siguienteAuto;
4 }

decia que no podia encontrar el valor o simbolo de la variablesiguienteAuto......entonces le puse =null;
y ya lo compilo, le di que imprimiera un auto Y SI CHIDO!!!

pero ahora el modo de imprimir todos los autos para que solod andole uno se valla a los otros? osea que la recorra como es eso? como se hace?

seria construir un metodo especial para imprimir? que verifique si la liga es a null ps se acabe y si no que la imprime y luego señalarle que siga al siguiente nodo? o como??


ahora si bien entendi, una instancia de una clase es como una copia no? donde estan las variables, y yo por otro lado las defino a gusto de cada cosa no?, osea ya no hay necesidad de hacer una variable de cada auto porque tengo mi copia de la clase no? uso esa misma copia para todas mis definiciones??

me podrian dar un ejemplo de como hacer que el usuario valla creando los nodos? o una logica haber si me sale? gracias....
  #13 (permalink)  
Antiguo 03/11/2010, 07:57
 
Fecha de Ingreso: julio-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 173
Antigüedad: 19 años, 9 meses
Puntos: 15
Respuesta: Uso de Listas en Java no me entran!!

Hola, a ver si esto te sirve:

Código PHP:
main() {

// defines los autos
// defines la lista encadenados x 'siguienteAuto'.

// Y llamas a este nuevo metodo pasandole el primer auto.
recorrerLista(auto1);

// fin
}



// Y para recorrer la lista...te basas de un auto temporal 
// que ira siendo reemplazado por cada nodo de la lista.
public void recorrerLista(Auto primerAuto) {

Auto autoTemporal primerAuto
while (
autoTemporal != null) {
  
System.out.println("Nombre: " autoTemporal.nombre);
  
autoTemporal autoTemporal.siguienteAuto;
}


__________________
apuntes unlam apuntes, modelos de parcial, final, foros.
relaciones de pareja - dudas de amor, sexo, noviazgo y más.
  #14 (permalink)  
Antiguo 04/11/2010, 20:17
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Uso de Listas en Java no me entran!!

Muchas gracias Xous, lo implemente ami practica y todo bien, ya voy comprendiendo un poco.... intente hacer un metodo para crear los autyos que el usuario defina pero no lo pude materializar, no se como ir ligando el auto a uno anterior que ya este o que haya metido.....

esta es mi practica:
Código PHP:
//practica de zero :D
 
import javax.swing.*;

public class 
Autos {
        
//Variables para el objeto, osea las que tendran los objetos tipo Autos.
    
    
public String Nombre;
    public 
int modelo;
    public 
Autos Next;
    
   public static 
void main(String[] args) {
        
Autos Carro1 = new Autos();
        
Carro1.Nombre="Bocho";
        
Carro1.modelo=1980;
        
        
Autos Carro2 = new Autos();
        
Carro2.Nombre="Cobalto";
        
Carro2.modelo=2001;
        
              
//Enlazo los carros que tengo
        
Carro1.Next=Carro2;
        
Carro2.Next=null;
        
        
//llamo al metodo para imprimir lista
        
RecorreLista(Carro1);
    }
    
    public static 
void RecorreLista(Autos PrimerAuto)
    {
        
Autos temporal PrimerAuto;
        while (
temporal != null)
        {
            
JOptionPane.showMessageDialog(null"Usted es propietario de un "+temporal.Nombre+" modelo "+temporal.modelo);
            
temporal=temporal.Next;
        }
    }
    
    public static 
void CreaCarros()
    {
        
Autos nuevocarro= new Autos();
        
String nombre JOptionPane.showInputDialog("Nombre del Auto? ");
        
int modelo Integer.parseInt(JOptionPane.showInputDialog("Modelo del Auto?"));

//aqui nos e como va la liga para los autos, como hago que el que quiera crear el usuario se enlace con carro2, y que si se vuelbe a usar este metodo se enlace con el carro3, y asi sucesivamente?
    
        
    
}

Bueno me falto llamar al metodo CreaCarros(); no se si le debo de mandar algun dato.... supongo que sera de manera parecida al de recorrer es decir creando algo temporal o no?
  #15 (permalink)  
Antiguo 08/11/2010, 08:43
 
Fecha de Ingreso: julio-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 173
Antigüedad: 19 años, 9 meses
Puntos: 15
Respuesta: Uso de Listas en Java no me entran!!

Hola, no te puedo ayudar con lo de crearAuto ya que no manejo swing.

Aprovecho y te hago algunos comentarios que no hacen al problema pero sí hacen más prolijo tu código:

A la clase no le pongas Autos, sino Auto, ya que una instancia, solo representará a UN auto.

A las instancias, y a los métodos se acostumbra que empiecen con una letra minúscula (al menos en Java), con lo cual, aconsejo los renombres a: recorreLista, y creaCarros.

saludos!
__________________
apuntes unlam apuntes, modelos de parcial, final, foros.
relaciones de pareja - dudas de amor, sexo, noviazgo y más.

Última edición por XouS; 08/11/2010 a las 08:48 Razón: era un quote del mensaje directamente anterior, no tiene sentido volver a mostrar el post completo!!

Etiquetas: listas
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

SíEste tema le ha gustado a 2 personas




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