package stack; /** * @Title: Stack * @ProjectName Demo03 * @date 2018/9/12 */ public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e); E pop(); E peek(); }
package stack; import array.Array; /** * @Title: ArrayStack * @ProjectName Demo03 * @date 2018/9/12 */ public class ArrayStack<E> implements Stack<E> { private Array<E> array; public ArrayStack() { array = new Array<>(); } public ArrayStack(int capacity) { array = new Array<>(capacity); } @Override public int getSize() { return array.getSize(); } @Override public boolean isEmpty() { return array.isEmpty(); } @Override public void push(E e) { array.addLast(e); } @Override public E pop() { return array.removeLast(); } @Override public E peek() { return array.getLast(); } @Override public String toString() { StringBuilder res = new StringBuilder(); res.append("Stack: ["); for (int i = 0; i < array.getSize(); i++) { res.append(array.get(i)); if (i != array.getSize() - 1) { res.append(","); } } res.append("] top"); return res.toString(); } public static void main(String[] args) { ArrayStack<String> arrayStack = new ArrayStack<>(); arrayStack.push("a"); arrayStack.push("b"); arrayStack.push("c"); System.out.println(arrayStack); String pop = arrayStack.pop(); System.out.println(pop); System.out.println(arrayStack); System.out.println(arrayStack.peek()); } }