package com.algs;
import java.util.Iterator;
public class StackArray- implements Iterable
- {
private Item[] arr = (Item[]) new Object[1]; // JavaÎÞ·¨´´½¨·ºÐÍÊý×飬ֻÄÜʹÓÃת»»ÀàÐÍ
private int N = 0;
public boolean isEmpty(){
return 0 == N;
}
public int size(){
return N;
}
/**
* ¼ì²âÕ»ÊÇ·ñΪ¿Õ
* @return
*/
public Item pop(){
if(N < 0){
throw new IllegalArgumentException();
}
Item result = arr[N--];
arr[N--] = null; // ±ÜÃâÄÚ´æÒç³ö£¬Ò²¼´¶ÔÏóÓÎÀë
if(N > 0 && N == arr.length / 4){
resize(arr.length/2);
}
return result;
}
/**
* ÐèÒª¼ì²âÕ»ÊÇ·ñÒÑÂú
* @param item
*/
public void push(Item item){
if(N == arr.length){
resize(2 * arr.length);
}
arr[N++] = item;
}
/**
*
* @param newSize
*/
private void resize(int newSize){
Item[] newArr = (Item[]) new Object[newSize];
for(int i = 0; i < N; i++){
newArr[i] = arr[i];
}
arr = newArr;
}
@Override
public Iterator
- iterator() {
return new ReverseArrayIterator();
}
/**
* Õ»ÊǺó½øÏȳö£¬ÄæÐò±éÀúÊý×é
* @author Administrator
*
*/
private class ReverseArrayIterator implements Iterator
- {
private int i = N;
@Override
public boolean hasNext() {
return i > 0;
}
@Override
public Item next() {
return arr[--i];
}
}
}