See More

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]; } } }