下壓桟(LIFO)
阿新 • • 發佈:2017-09-24
next resize {} implement mov pub tac == sta
此代碼並不復雜,但卻是其他集合數據類型的實現的模版
import java.util.Iterator; public class ResizingArrayStackStack<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*a.length); 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 implementsIterator<Item>{ private int i = N; public boolean hasNext(){ return i > 0;} public Item next() { return a[--i];} public void remove() {} } }
下壓桟(LIFO)