package Stack.src; import java.util.Iterator; /** * 使用链表实现的栈 */ public class ListStack implements MyStack { private Node top = null; private int N = 0; private class Node { Item item; Node next; } @Override public MyStack push(Item item) { Node newTop = new Node(); newTop.item = item; newTop.next = top; top = newTop; N++; return this; } @Override public Item pop() throws Exception { if (isEmpty()) { throw new Exception("stack is empty"); } Item item = top.item; top = top.next; N--; return item; } @Override public boolean isEmpty() { return N == 0; } @Override public int size() { return N; } @Override public Iterator iterator() { return new Iterator() { private Node cur = top; @Override public boolean hasNext() { return cur != null; } @Override public Item next() { Item item = cur.item; cur = cur.next; return item; } }; } }