自定义栈
通过学习自定义栈,了解栈的数据结构。 首先写一个栈的接口,描述其具有的基本功能。Stack.java 然后写一个接口的实现类,这只是其中一种实现方式。ArrayStack.java 最后写一个测试类,测试自定义栈的效果。Test.java 整个栈的实现,借助了 自定义数组 这篇文章的类。Array.java 结构如下: ?Stack.java: package algorithm; public interface Stack /** * 获取栈中数据的大小 * @return */ int getSize(); /** * 判断栈是否为空 * @return */ boolean isEmpty(); /** * 入栈 * @param e */ void push(E e); /** * 出栈 * @return */ E pop(); /** * 查看栈顶元素 * @return */ E peek(); } ArrayStack.java: package algorithm; public class ArrayStack private Array /** * 无参构造函数,调用array的无参构造函数,默认为10的 初始容量。 */ public ArrayStack(){ array=new Array } /** * 带参构造函数,指定初始容量。 * @param capacity */ public ArrayStack(int capacity) { array=new Array } /** * 获取栈的大小 */ @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.get(array.getSize()-1); } /** * 重写Object的toString方法 */ @Override public String toString() { StringBuilder sb=new StringBuilder(); sb.append("Stack:["); for(int i=0;i sb.append(array.get(i)); if(i!=array.getSize()-1) { sb.append(","); } } sb.append("] top");//表明最后是栈顶。 return sb.toString(); } /** * 自有的方法,获取栈的总容量。 * @return */ public int getCapacity() { return array.getCapacity(); } } Test.java: package algorithm; public class Test { public static void main(String[] args) { Stack for(int i=0;i<5;i++) { stack.push(i); System.out.println(stack); } stack.pop(); System.out.println(stack); } } 控制台输出: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |