Skip to content

mateoworks/pila_dinamica

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pila dinámica con Java

Una pila dinámica usa nodos o celdas para almacenar sus elementos, una de las principales características de la pila dinámica solo se limita en tamaño a la memoria del equipo, además usa los recursos del computador de una manera más eficiente, dado que conforme se van agregando elementos, esta va aumentando en tamaño.

Se le considera una estructura de datos LIFO (last-in, first-out), último en entrar, primero en salir.

Uso de este proyecto

Este proyecto fue realizado con el IDE Eclipse, por lo tanto se recomienda abrirlo con el mismo. Más detalles sobre la pila dinámica aquí.

Operaciones de una pila dinámica

Crear el nodo

La clase nodo contendrá el elemento de la pila y el apuntador al nodo anterior

public class Nodo {
	public Object elemento;
	public Nodo siguiente;

	public Nodo() {
		this.elemento = null;
		this.siguiente = null;
	}

	public Nodo(Object e, Nodo sig) {
		this.elemento = e;
		this.siguiente = sig;
	}
}

Interfaz de la pila

public interface IPila {
	public boolean vacia();
	public void apilar(Object elemento);
	public Object desapilar();
	public Object ultimoElemento();
	public int tamanioPila();
}

Atributos y constructor de la clase pila

    private Nodo cima;

	public Pila() {
		this.cima = null;
	}

Pila vacía

    public boolean vacia() {
		return this.cima == null;
	}

Agregar elementos (push)

    public void apilar(Object e) {
		this.cima = new Nodo(e, this.cima);
	}

Obtener el último elemento sin quitarlo (peek)

    public Object ultimoElemento() {
		if(!vacia()) {
			return this.cima.elemento;
		}else {
			System.out.println("Pila vacía");
			return null;
		}
	}

Quitar el último elemento

    public Object desapilar() {
		if(!vacia()) {
			Object ultimo = ultimoElemento();
			this.cima = this.cima.siguiente;
			return ultimo;
		}else {
			System.out.println("Pila vacía");
			return null;
		}
	}

Número de elementos de la pila usando recursividad

    private int contarElementos(Nodo nodo) {
		if(nodo != null) {
			return contarElementos(nodo.siguiente) + 1;
		}
		return 0;
	}
	@Override
	public int tamanioPila() {
		Nodo nodo = this.cima;
		int tamanio = contarElementos(nodo);
		return tamanio;
	}

Imprimir la pila

    public String toString() {
		String cadena = "[";
		Nodo auxiliar = this.cima;
		while(auxiliar != null) {
			if(auxiliar.siguiente != null) {
				cadena += auxiliar.elemento + ", ";
				auxiliar = auxiliar.siguiente;
			}else {
				cadena += auxiliar.elemento + "]";
				auxiliar = auxiliar.siguiente;
			}
		}
		return cadena;
	}

About

Pila dinámica en Java

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages