🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 说明 五个操作: 从用户的角度看,支持这些操作就好.具体底层实现,用户不关心.实际底层有多种实现方式 . * void push(E) //入栈 * E pop() //出栈 * E peek() //查看栈顶元素 * int getSize() //查看栈元素数量 * boolean isEmpty() //查看栈是否为空 ### 实现 #### 定义一个接口 ~~~ public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e); E pop(); E peek(); } ~~~ #### 实现接口,并完成栈的相关操作 ~~~ public class ArrayStack<E> implements Stack<E> { Array<E> array; public ArrayStack(int capacity) { array = new Array<>(capacity); } public ArrayStack() { array = new Array<>(); } @Override public int getSize() { return array.getSize(); } @Override public boolean isEmpty() { return array.isEmpty(); } public int getCapacity() { return array.getCapacity(); } @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 :"); res.append('['); 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(); } } ~~~ ### 栈的复杂度分析 栈在时间性能上是非常的好的 * void push(E) //O(1)均摊 * E pop(E) //O(1)均摊 * E peek() //O(1) * int getSize() //O(1) * boolean isEmpty() //O(1)