package 數據結構.Queue;
import java.util.Iterator;
public class QueueNode<Item> implements Iterable {
private class Node{
Item item;
Node next;
}
Node first;
Node last;
int N=0;
public int size(){
return N;
}
public boolean isEmpty(){
return N==0;
}
public void enqueue(Item item){
Node oldfirst=last;
last=new Node();
last.item=item;
last.next=null;
if (isEmpty()) {
first=last;
} else{
oldfirst.next=last;
}
N++;
}
public Item dequeue(){
Item item =first.item;
first=first.next;
//當注意對象的引用變量是多個時,要注意剩下的引用變量會使得對象無法被回收。
if (isEmpty())last=null;
N--;
return item;
}
@Override
public Iterator iterator() {
return new QueueNodeIterator();
}
private class QueueNodeIterator<Item> implements Iterator<Item> {
Node temp =first;
int j=N;
@Override
public boolean hasNext() {
return j>0;
}
@Override
public Item next() {
Item item=(Item) temp.item;
temp = temp.next;
j--;
return item;
}
@Override
public void remove() {
}
}
}
QueueNode(將書中後續的Iterable補全)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.