标签:
package cn.aust.zyw.demo; import java.util.Iterator; /** * Created by zyw on 2016/2/19. * 用数组实现栈 */ public class MyStack<T> implements Iterable<T>{ public static void main(String args[]){ MyStack<Integer> myStack=new MyStack<>(); for(int i=0;i<8;i++){ myStack.push(i); } Iterator iter=myStack.iterator(); while(iter.hasNext()){ System.out.println(iter.next()); } } private int N=0; private T a[]=(T[]) new Object[5]; public void push(T t){ if(isFull()) resize(a.length*2); a[N++]=t; } public T pop(){ if(N<0) throw new RuntimeException("栈已空"); T t=a[--N]; a[N]=null;//垃圾回收 if(N>0&&N==a.length/4){ resize(a.length/2); } return t; } private boolean isEmpty(){return N==0;} private boolean isFull(){return N==a.length;} private void resize(int max){ T t[]=(T[]) new Object[max]; for(int i=0;i<N;i++){ t[i]=a[i]; } a=t; } int size(){return N;} @Override public Iterator<T> iterator() { return new Iterator<T>() { private int i=N; @Override public boolean hasNext() { return i>0; } @Override public T next() { return a[--i]; } }; } }
标签:
原文地址:http://www.cnblogs.com/yunwuzhan/p/5201224.html