// ----------------------------------------------------------- // Estruturas de Dados 2019/2020 (CC1007) - DCC/FCUP // http://www.dcc.fc.up.pt/~pribeiro/aulas/edados1920/ // ----------------------------------------------------------- // Implementacao de Pilha usando array // Ultima alteracao: 06/04/2018 // // Nota: o Java proibe a criacao de arrays genericos. Para efeitos // de demonstracao, usamos aqui um array de Objects e um cast // (que prova um aviso de compilacao que e "evitado" com a linha do // Supress Warning). De um modo geral, para genericos, o ideal seria // Nao usar um array "nativo", mas sim algo como um ArrayList, mas // aqui queriamos demonstrar como podia ser feito. // ----------------------------------------------------------- import java.util.Arrays; public class ArrayStack implements MyStack { public static final int CAPACITY = 1000; // Capacidade padrao private T[] data; // Array para conter elementos private int size; // Quantidade de elementos ArrayStack() { this(CAPACITY); } @SuppressWarnings("unchecked") ArrayStack(int capacity) { data = (T[]) new Object[capacity]; size = 0; } public void push(T v) { if (size >= data.length) throw new RuntimeException("Stack is full"); data[size++] = v; } public T pop() { if (isEmpty()) return null; return data[--size]; } public T top() { return data[size-1];} public int size() {return size;} public boolean isEmpty() {return (size==0);} public String toString() { String str = "["; for (int i=size-1; i>=0; i--) { str += data[i]; if (i>0) str += ","; } str += "]"; return str; } }