基于自定义动态数组实现栈
1.栈也是一种线性结构,对应的操作是动态数组操作的子集
2.只能从一端添加元素,也只能从同一端取出元素(称为栈顶)【后进先出】
应用:undo操作(撤销)比如eclipse的ctrl+z
括号匹配等等
栈的实现(基于自定义动态数组实现的栈):
首先创建一个Stack<T>接口 来声明要用到的方法:
public interface Stack<T> { void push(T t); T pop(); T peek(); int getSize(); boolean isEmpty(); }
实现栈:
public class ArrayStack<T> implements Stack<T>{ Array<T> array; public ArrayStack(int capacity){ array = new Array<T>(capacity); }//构造方法与Array类似 public ArrayStack(){ array = new Array<T>(); } //添加一个元素 public void push(T t) { array.addLast(t); } // 取出元素 public T pop() { return array.removeLast(); } public T peek() { return array.getLast(); } public int getSize() { return array.getSize(); } public boolean isEmpty() { return array.isEempty(); } public int getCapacity() { return array.getCapacity(); } //打印测试用: 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(); } }
学习的时候喜欢用Markdown做记录,存货已经堆满文件夹了

浙公网安备 33010602011771号