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());
}
}
Suscribirse a:
Enviar comentarios (Atom)
Tienes idea de como hacerlo ordenado por algun dato
ResponderEliminarAmigo 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.
ResponderEliminarpublic void add_end(int date, String date2) {
ResponderEliminarNode 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 :)
public void add_end(int date, String date2) {
ResponderEliminarNode 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 :)
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