// CoMP1006 W13 // Stack class public class Stack{ // we'll use a partially filled array to store our stack private Object[] data; private int size; // constructors public Stack(){data = new Object[10]; size = 0;} public Stack(int s){data = new Object[s]; size = 0;} // methods public int size(){ return size;} public void push(Object item){ if(size >= data.length - 1){ Object[] newData = new Object[data.length * 2]; System.arraycopy(data,0,newData,0,size); data = newData; } data[size] = item; size += 1; } public Object pop(){ //todo: check if size is too small and reduce the size // of the stack if(size == 0){ return null; }else{ size -= 1; Object item = data[size]; data[size] = null; return item; } } public Object peek(){ if(size==0){ // handle special case of empty stack return null; }else{ // non-empty case of stack return data[size-1]; } } }