public class Stack { private int size; private EVListe stack = new EVListe(); private int elements = 0; public Stack(int size) { this.size = size; } public void setSize(int size) { this.size = size; } public int getSize() { return this.size; } public void push(Object o) { if (this.elements < this.size) { this.stack.addFirst(o); this.elements++; } else { System.out.println("=== STACK OVERFLOW ==="); } } public Object pop() { if (!this.isEmpty()) { Object o = this.stack.getFirst(); this.stack.removeFirst(); this.elements--; return o; } else { System.out.println("=== STACK EMPTY ==="); return null; } } public boolean isEmpty() { return (this.elements == 0) ? true : false; } public static void main(String[] args) { Stack s = new Stack(5); s.push(5); s.push(4); s.push(3); s.push(2); s.push(1); s.push(0); // === STACK OVERFLOW === System.out.println(s.pop()); System.out.println(s.pop()); System.out.println(s.pop()); System.out.println(s.pop()); System.out.println(s.pop()); System.out.println(s.pop()); // === STACK EMPTY === System.out.println(); System.out.println("-------------------"); s.push(3); s.push(2); s.push(1); s.push(0); System.out.println(s.pop()); System.out.println(s.pop()); System.out.println(s.pop()); System.out.println(s.pop()); } }