链表实现下压栈
public class Stack<Item> implements Iterable<Item>{
private int N = 0; // 栈的大小
private Node first = null; // 栈顶节点
private class Node{ //节点数据
Item item;
Node next;
}
public void push(Item item){
Node temp = first; //引用
first = new Node();
first.item=item;
first.next=temp;
N+=1;
}
public Item pop(){
Item item = first.item;
first=first.next;
N-=1;
return item;
}
@Override
public Iterator<Item> iterator() {
return new ListIterator();
}
public class ListIterator implements Iterator<Item>{
private Node current = first;
@Override
public boolean hasNext() {
return current!=null;
}
@Override
public Item next() {
Item item = current.item;
current=current.next;
return item;
}
}
}
链表实现的下压栈,其:
- 可以处理任何类型的数据
- 所需要的空间和栈的大小成正比
- 操作所需要的时间和栈的大小无关