Pilas

Codigo de los métodos para la creacion de Pilas en Java

Autor anónimo
agosto 2020

Para desarrollar mejor nuestra pila, usaremos el siguiente diagrama de clases:

Diagrama uml (solo una clase)

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();
	}
}