实现报告:用java实现了下压栈,类似于大一下的一次编程作业,同时增加了可迭代功能,用到了迭代器设计模式,且栈是泛型的
import java.util.Iterator;
public class ResizingArrayStack<Item> implements Iterable<Item> {
private Item[] a = (Item[])new Object[1];
private int N = 0;
public boolean isEmpty() {
return N==0;
}
public int size() {
return N;
}
private void resize(int max) {
Item[] temp=(Item[]) new Object[max];
for(int i=0;i<N;i++) {
temp[i]=a[i];
}
a=temp;
}
public void push(Item item) {
if(N==a.length) {
resize(2*N);
}
a[N++]=item;
}
public Item pop() {
Item item=a[--N];
a[N]=null;
if(N>0&&N==a.length/4) resize(a.length/2);
return item;
}
public Iterator<Item> iterator() {
return new ReverseArrayIterator();
}
private class ReverseArrayIterator implements Iterator<Item>{
private int i=N;
public boolean hasNext() {
return i>0;
}
public Item next() {
return a[--i];
}
public void remove() {
}
}
}