package com.interview.basics.model.collection.stack; import com.interview.basics.model.collection.stack.Stack; public class FixCapabilityArrayStack<T> implements Stack<T> { private T[] array; private int N; private int current = 0; @SuppressWarnings("unchecked") public FixCapabilityArrayStack(int N){ this.N = N; this.array = (T[]) new Object[N]; } @Override public void push(T item) { if(this.size() < N){ this.array[current++] = item; } else { System.err.println("Stack is full"); } } @Override public T pop() { if(!this.isEmpty()) return this.array[--current]; else return null; } @Override public boolean isEmpty() { return current == 0; } @Override public int size() { return current; } @Override public T peek() { if(!this.isEmpty()) return this.array[current-1]; else return null; } @Override public T get(int i) { return i < current? this.array[i] : null; } }