miércoles, 2 de enero de 2013

Código java Listas Enlazadas: Añadir nodo por el principio y por el final


En el siguiente código java veremos como crear una lista enlazada e insertar nodos en ella, ya sea por el principio de la lista o por el final.
He hecho una primera clase llamada Nodo en la que las variables son pais y ciudad (Nombres que habrá dentro de cada nodo) y Next (para desplazarnos de un nodo a otro.
La clase se compone de las 3 variables, el constructor con pais y ciudad, métodos gets y sets y un método toString:
public class Nodo {
private String pais;
private String ciudad;
private Nodo next;
public Nodo(String pais, String ciudad){
// Codigo por www.desarrollaraplicaciones.com
this.pais=pais;
this.ciudad=ciudad;
}
public String getPais() {
return pais;
}
public void setPais(String pais) {
this.pais = pais;
}
public String getCiudad() {
return ciudad;
}
public void setCiudad(String ciudad) {
this.ciudad = ciudad;
}
public Nodo getNext() {
return next;
}
public void setNext(Nodo next) {
this.next = next;
}
public String toString(){
String d;
d=pais+"-"+ciudad+" ";
return d;
}
}

En la siguiente clase (llamada Lista) he creado los métodos para añadir un nodo por el principio (add) y por el final (addFinal), además de un nodo inicio con valor null (para lista vacía) y un método toString. También he incluído en esta clase el main desde el que insertaremos nodos en la lista ya sean por el principio o por el final y llamaremos al toString para visualizar la lista enlazada:
public class Lista {
private Nodo inicio;
public Lista(){
// Codigo por www.desarrollaraplicaciones.com
this.inicio=null;
}
//añadiremos un Nodo por el principio de la lista
public void add(String pais, String ciudad){
Nodo r=new Nodo(pais, ciudad);
r.setNext(this.inicio);
this.inicio=r;
}
//añadiremos un Nodo por el final de la lista
public void addFin(String pais, String ciudad){
Nodo v=new Nodo(pais, ciudad);
Nodo r=this.inicio;
while(r.getNext()!=null){
r=r.getNext();
}
r.setNext(v);
v.setNext(null);
}
//String para ver cada uno de los nodos de la lista
public String toString(){
String d="";
Nodo r=this.inicio;
while(r!=null){
d=d+r.toString();
r=r.getNext();
}
return d;
}
//insertaremos nodos en la lista
public static void main(String[] args) {
Lista valor=new Lista();
valor.add("Francia", "Marsella");
valor.add("EEUU", "Florida");
valor.addFin("Chile", "Santiago");
System.out.println(valor.toString());
}
}

5 comentarios:

  1. Tienes idea de como hacerlo ordenado por algun dato

    ResponderEliminar
  2. Amigo a mi me genera un error cuando pruebo su código, y es cuando utilizo solo el método agregar fin, el método funciona pero cuando ya hay algo en la lista. Creo que necesitaría un condicional para arreglarlo.

    ResponderEliminar
  3. public void add_end(int date, String date2) {
    Node new_node = new Node(date, date2);
    Node temp = head;
    if (empty() == true) {
    head = new Node(date, date2);

    } else {
    while (temp.getNext() != null) {
    temp = temp.getNext();
    }
    temp.setNext(new_node);
    }

    }


    Yo lo arregle asi :)

    ResponderEliminar
  4. public void add_end(int date, String date2) {
    Node new_node = new Node(date, date2);
    Node temp = head;
    if (empty() == true) {
    head = new Node(date, date2);

    } else {
    while (temp.getNext() != null) {
    temp = temp.getNext();
    }
    temp.setNext(new_node);
    }

    }


    Yo lo arregle asi :)

    ResponderEliminar
  5. Amigo a mi me genera un error cuando pruebo su código, y es cuando utilizo solo el método agregar fin, el método funciona pero cuando ya hay algo en la lista. Creo que necesitaría un condicional para arreglarlo.

    ResponderEliminar