123 - GeorgeZhung/-1 GitHub Wiki
import java.util.Iterator;
/**
-
ResizingArrayStack class.
-
Include StdIn.java, and StdOut.java. */ public class ResizingArrayStack implements Iterable { private Item[] a; private int N;
public ResizingArrayStack() { a = (Item[]) new Object[1]; 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 Iterable iterator() { return new ReverseArrayIterator(); }
private class ReverseArrayIterator implements Iterator { private int i = N; public boolean hasNext() {return i > 0;} public Item next() {return a[--i];} public void remove() {} }
public static void main(String[] args) { ResizingArrayStack s = new ResizingArrayStack(); while(!StdIn.isEmpty()){ String item = StdIn.readString(); if (!item.equals("-")) s.push(item); else if (!s.isEmpty()) StdOut.print(s.pop() + " "); } StdOut.println("(" + s.size() + "left on stack)"); for(String string: 5) StdOut.println(string); } }