Codigo de los métodos para la creacion de Pilas en Java
Para desarrollar mejor nuestra pila, usaremos el siguiente diagrama de clases:
Clase Pila
Nuestra clase Pila tendra 3 atributos:
- elementos: Este será un vector que simulará el comportamiento de la pila con nuestra ayuda xD
- tope: Este sera un puntero que nos irá indicando en que posición del vector ‘elementos’ se encuentra el último agregado. Al ser creada, este valor tendrá el valor de 0
- max: Nuestra pila debe tener una capacidad máxima, por eso necesitamos de este atributo
public class Pila{
private int tope;
private int max;
private int elementos[];
public Pila() {
max = 30;
elementos = new int[max];
tope = 0;
}
// metodo esVacia
// metodo esLlena
// metodo adicionar
// metodo eliminar
}
esVacia
Este metodo se encargara de verificar si nuestra pila se encuentra vacia o no, por eso devuelve un datao booleano
public boolean esVacia() {
if (tope > 0) {
return false;
} else {
return true;
}
}
Optimizando el código nos quedaria:
public boolean esVacia(){
return tope>0?false:true;
}
esLlena
Puede que en algun punto nuestra pila llegue al maximo de su capacidad, por lo que necesitaremos de este metodo para verificar
public boolean esLlena() {
if (tope == max) {
return true;
} else {
return false;
}
}
Optimizando el código nos quedaria:
public boolean esLlena(){
return tope == max?true:false;
}
adicionar
Para adicionar un elemento, debemos asegurarnos que nuestra pila no este llena. La idea es que en nuestro vector ‘elementos’ vayamos agregando segun el ‘tope’
public void adicionar(int elemento) {
if (esLlena()) {
System.out.println("La pila esta llena");
}else{
tope++;
elementos[tope] = elemento;
}
}
eliminar
Al eliminar un elemento, debemos alterar el vector ‘elementos’ y nuestro ‘tope’
public int eliminar() {
int elemento = 0;
if (esVacia()) {
System.out.println("Pila vacia");
} else {
elemento = elementos[tope];
tope--;
}
return elemento;
}
Mostrar
Para el método mostrar nos apoyaremos de una pila auxiliar ‘aux’:
public void mostrar() {
Pila aux = new Pila();
System.out.println("Pila:");
while (!esVacia()) {
int elemento = eliminar();
System.out.println(elemento);
aux.adicionar(elemento);
}
while (!aux.esVacia()) {
adicionar(aux.eliminar());
}
}
Clase Main
Ya para probrar nuestra estructura Pila nos creamos una clase Main.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Pila p = new Pila();
int n = 3;
for (int i = 0; i < n; i++) {
System.out.println("Dato? <int>");
int elemento = sc.nextInt();
p.adicionar(elemento);
}
p.mostrar();
System.out.println("El ultimo elemento es: " + p.eliminar());
p.mostrar();
}
}