基于数组的变容栈(支持迭代)

来源:互联网 发布:喜马拉雅 推荐 知乎 编辑:程序博客网 时间:2024/04/30 04:45
import java.util.Iterator;public class ResizingArrayStack<Item> implements Iterable<Item>{private Item[] a;//栈元素private int N = 0;//栈深度public ResizingArrayStack(int max) {a =(Item[]) new Object[max];}public void resize(int SIZE){Item[] ss = (Item[])new  Object[SIZE];for(int i = 0;i < N ; i++){ss[i] = a[i];}a = ss;}public void push(Item item){if(N == a.length)resize(a.length * 2);a[N++] = item;}public Item pop(){Item item = a[--N];a[N] = null;if(N == a.length/4 && N > 0)resize(a.length/2);return item;}public class ReverseArrayIterator implements Iterator<Item>{private int  i = N;public boolean hasNext(){return i > 0;}public Item next(){return a[--N];}}@Overridepublic Iterator<Item> iterator() {return new ReverseArrayIterator();}}

0 0
原创粉丝点击