import java.util.Iterator;
public class Stack<Item> implements Iterable<Item>{
private Node first;//栈顶(最近添加的元素)
private int N; //元素数量
private class Node{//定义节点的嵌套类
Item item;
Node next;
}
public boolean isEmpty() {
return first==null;
}
public int size() {
return N;
}
public void push(Item item) {//向栈顶添加元素
Node oldfirst=first;
first=new Node();
first.item=item;
first.next=oldfirst;
N++;
}
public Item pop() {//从栈顶删除元素
Item item=first.item;
first=first.next;
N--;
return item;
}
public Iterator<Item> iterator(){
return new StackIterator();
}
private class StackIterator implements Iterator<Item>{//迭代器的实现
private Node current=first;
public boolean hasNext() {
return current != null;
}
public void remove() {
}
public Item next() {
Item item=current.item;
current=current.next;
return item;
}
}
}
这份泛型的Stack实现的基础是链表数据结构.。它可以用于创建任意数据类型的栈,并且在类中实现了对迭代的支持