接口类
public interface CustomStack<T> { //压栈方法 public void push(T data)throws Exception; //弹栈移除顶部元素,并返回对应的数据 public T pop()throws Exception; //获取stack的第一个元素 public T peek(); //判断栈是否为空 public boolean empty(); //返回stack中元素个数 public int size(); }
调用接口实现类
public class CustomArrayStack<T> implements CustomStack<T> { static final int defaultSize = 15; //指定顶部元素的位置 private int size; private T[] arrays; /** * 无参构造法,作一些初始化动作 * * @throws Exception */ @SuppressWarnings("unchecked") public CustomArrayStack(){ size = 0; arrays = (T[]) new Object[defaultSize]; } /** * 根据用户自定义数组大小初始化数组 * * @param customSize; * */ @SuppressWarnings("unchecked") public CustomArrayStack(int customSize){ size = 0; arrays = (T[]) new Object[defaultSize]; } //向栈顶添加元素 @Override public void push(T data) throws Exception { if (size<arrays.length){ arrays[size] = data; size++; }else { throw new Exception(); } } //将栈顶的元素删除 @Override public T pop() throws Exception { T topData; if (empty()){ throw new Exception(); }else { topData = arrays[size-1]; size--; } return topData; } /** * 获取栈顶的元素 * @return */ @Override public T peek() { return arrays[size-1]; } //判断栈是否为空 @Override public boolean empty() { return size==0; } //返回栈的长度 @Override public int size() { return size; } }