Esta publicación muestra cómo implementar una pila mediante el uso de una matriz.
Los requisitos de la pila son: 1) la pila tiene un constructor que acepta un número para inicializar su tamaño, 2) la pila puede contener cualquier tipo de elementos, 3) la pila tiene un método push () y pop ().
Una implementación de pila simple
public class Stack<E> { private E[] arr = null; private int CAP; private int top = -1; private int size = 0; @SuppressWarnings("unchecked") public Stack(int cap) { this.CAP = cap; this.arr = (E[]) new Object[cap]; } public E pop() { if(this.size == 0){ return null; } this.size--; E result = this.arr[top]; this.arr[top] = null;//prevent memory leaking this.top--; return result; } public boolean push(E e) { if (isFull()) return false; this.size++; this.arr[++top] = e; return true; } public boolean isFull() { if (this.size == this.CAP) return false; return true; } public String toString() { if(this.size==0){ return null; } StringBuilder sb = new StringBuilder(); for(int i=0; i<this.size; i++){ sb.append(this.arr[i] + ", "); } sb.setLength(sb.length()-2); return sb.toString(); } public static void main(String[] args) { Stack<String> stack = new Stack<String>(11); stack.push("hello"); stack.push("world"); System.out.println(stack); stack.pop(); System.out.println(stack); stack.pop(); System.out.println(stack); } } |
Producción:
hello, world hello null
Este ejemplo se utiliza dos veces en «Effective Java». En primer lugar, el ejemplo de la pila se utiliza para ilustrar la pérdida de memoria. En segundo lugar, el ejemplo se utiliza para ilustrar cuándo podemos suprimir las advertencias no marcadas.
Puede ver cómo implementar una cola usando una matriz.