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 stub
Item[] temp = (Item[]) new Object[max];
for(int i = 0;i < N;i++)
temp[i] = a[i];
a = temp;
}
@Override
public Iterator<Item> iterator() {
// TODO Auto-generated method stub
return new ReverserArrayIterator();
}
public class ReverserArrayIterator implements Iterator<Item>{
private int i = N;
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return i > 0;
}
@Override
public Item next() {
// TODO Auto-generated method stub
return a[--i];
}
@Override
public void remove() {
// TODO Auto-generated method stub
}
}
}
下压栈(能够动态调整数组大小的实现)
最新推荐文章于 2020-05-13 17:37:39 发布