下压栈(能够动态调整数组大小的实现)

来源:互联网 发布:supply chain 知乎 编辑:程序博客网 时间:2024/04/28 12:32
package Basic;import java.util.Iterator;public class ResizingArrayStack<Item> implements Iterable<Item>{private Item[] a = (Item[]) new Object[1];private int N;public boolean isEmpty(){return N==0;}public int size(){return N;}public Item pop(){Item item = a[--N];if(N > 0 && N == a.length / 4){resize(a.length/2);}return item;}public void push(Item item){if(a.length == N)resize(2*a.length);a[N++] = item;}public void resize(int max) {// TODO Auto-generated method stubItem[] temp = (Item[]) new Object[max];for(int i = 0;i < N;i++)temp[i] = a[i];a = temp;}@Overridepublic Iterator<Item> iterator() {// TODO Auto-generated method stubreturn new ReverserArrayIterator();}public class ReverserArrayIterator implements Iterator<Item>{private int i = N;@Overridepublic boolean hasNext() {// TODO Auto-generated method stubreturn i > 0;}@Overridepublic Item next() {// TODO Auto-generated method stubreturn a[--i];}@Overridepublic void remove() {// TODO Auto-generated method stub}}}

0 0