miércoles, 2 de enero de 2013

Código java crear Pila con lista enlazada clase PilaLista


En el siguiente código lo que haremos será crear una pila en java utilizando una lista enlazada. En una pila, los datos que introducimos van cayendo al fondo y los siguientes van poniéndose unos encima de otros. Cuando utilizamos el método extraer, lo que hacemos es extraer el último dato que habíamos introducido.


En este caso lo que introduciremos en la pila serán datos del tipo int (enteros). Para empezar he creado una clase llamada Nodo:

public class Nodo {
private int dato;
private Nodo next;
//Codigo por www.DesarrollarAplicaciones.com
public Nodo(int dato){
this.dato=dato;
}
public int getDato() {
return dato;
}
public void setDato(int dato) {
this.dato = dato;
}
public Nodo getNext() {
return next;
}
public void setNext(Nodo next) {
this.next = next;
}
public String toString(){
String s=" "+dato+" ";
return s;
}
}

Esta clase ya la vimos anteriormente en Código java Listas Enlazadas: Añadir nodo por el principio y por el final.

Ahora creo la clase PilaLista con los métodos insertar(), extraer(), estaVacia(), contarDatos() y toString(). Tambien pondré el main en esta misma clase:

public class PilaLista {
private Nodo cima;
//Codigo por www.DesarrollarAplicaciones.com
public PilaLista(){
this.cima=null;
}
public Nodo getCima() {
return cima;
}
public void setCima(Nodo cima) {
this.cima = cima;
}
public void insertar(int dato){
Nodo i=new Nodo(dato);
i.setNext(this.cima);
this.cima=i;
}
public int extraer(){
int dato=cima.getDato();
this.cima=cima.getNext();
return dato;
}
public boolean estaVacia() {
if (cima==null) {
System.out.println("La pila esta vacia");
return true;
} else {
System.out.println("La pila no esta vacia");
return false;
}
}
public int contarDatos() {
int contador=0;
Nodo h=cima;
while (h!=null) {
contador++;
h=h.getNext();
}
System.out.println("Numero de datos en la pila: "+contador);
return contador;
}
public String toString(){
String s="";
Nodo i=this.cima;
while(i!=null){
s=s+i.toString();
i=i.getNext();
}
return s;
}
public static void main(String[] args){
PilaLista mipila=new PilaLista();
mipila.insertar(12);
mipila.insertar(86);
mipila.insertar(4);
mipila.insertar(65);
mipila.insertar(108);
mipila.insertar(24);
mipila.extraer();
mipila.estaVacia();
mipila.contarDatos();
System.out.println(mipila.toString());
}
}

Si pruebas el código verás que todos los datos que vamos introduciendo van cayendo al final, unos encima de otros, y cuando llamamos a extraer, lo que hace es extraer el último dato que insertamos en la pila. El método estaVacia nos dirá si tiene datos o no tiene y el método contarDatos nos dirá el número de datos que tenemos dentro de la pila una vez insertados y extraídos los que queramos.

1 comentario: