Hola a todos, hoy os dejo la implementación de una pila dinámica en Java.
Una pila es una estructura dinámica que «apila» elementos de forma que para llegar al primero, hay que quitar todos los nodos que se hayan añadido después.
Utiliza LIFO (Last Input First Output) que significa que el último que entra es el primero que saldrá.
Esta pila se ha realizado en vídeo en nuestro canal de Youtube.
Aquí os dejo el código:
Nodo
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
/** * Clase Nodo * * @author DiscoDurodeRoer * @param */ public class Nodo //Atributos private T elemento; private Nodo //Contructor public Nodo(T elemento, Nodo this.elemento = elemento; this.siguiente = siguiente; } //Metodos public T getElemento() { return elemento; } public void setElemento(T elemento) { this.elemento = elemento; } public Nodo return siguiente; } public void setSiguiente(Nodo this.siguiente = siguiente; } @Override public String toString() { return elemento + "\n"; } } |
Pila dinamica
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
/** * Clase Pila Dinamica * * @author DiscoDurodeRoer * @param */ public class PilaDinamica //Atributos private Nodo private int tamanio; //Constructores public PilaDinamica() { top = null; //No hay elementos this.tamanio = 0; } /** * Indica si esta vacia o no * * @return */ public boolean isEmpty() { return top == null; } /** * Indica el tamaño * * @return */ public int size() { return this.tamanio; } /** * Devuelve el que esta más arriba en la pila * * @return */ public T top() { if (isEmpty()) { return null; } else { return top.getElemento(); } } /** * Saca y devuelve el elemento que mas arriba esta en la pila * * @return */ public T pop() { if (isEmpty()) { return null; } else { T elemento = top.getElemento(); Nodo top = null; //marco para borrar top = aux; //actualizo el top this.tamanio--; return elemento; } } /** * Mete un elemento a la pila * * @param elemento * @return */ public T push(T elemento) { Nodo top = aux; //actualizo el top this.tamanio++; return aux.getElemento(); } /** * Devuelve el estado de la pila * * @return */ public String toString() { if (isEmpty()) { return "La pila esta vacia"; } else { String resultado = ""; Nodo //Recorro la pila while (aux != null) { resultado += aux.toString(); aux = aux.getSiguiente(); } return resultado; } } } |
Lo podéis ver desde mi github desde aquí.
También te dejo el vídeo donde lo hacemos paso a paso (también lo podéis descargar por aquí)
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Por favor, me interesa que hagas un tutorial lo mas pronto posible sobre una pila estatica hecha con array, ingresando los valores por teclado.