package one.three;
import java.util.Iterator;
public class Queue<Item> implements Iterable<Item>{
private Node first; //队列的第一个结点
private Node last; //队列的最后一个结点
private int N; //队列中的元素个数
private class Node{ //定义了结点的嵌套类
Item item;
Node next;
}
public boolean isEmpty() { //判断队列是否为空
return first==null;
}
public int size() { //返回队列大小
return N;
}
public void enqueue(Item item) { //向队列末尾添加元素
Node oldlast = last;
last = new Node();
last.item = item;
last.next = null;
if(isEmpty()) {
first = last;
}else {
oldlast.next = last;
}
N++;
}
public Item dequeue() { //表头出队列,并返回一个值
Item item = first.item;
first = first.next;
if(isEmpty()) {
last = null;
}
N--;
return item;
}
@Override
public Iterator<Item> iterator() {
// TODO Auto-generated method stub
return null;
}
public static void main(String args[]) {
Queue<String> q = new Queue<String>();
q.enqueue("1");
q.enqueue("2");
q.enqueue("3");
int size = q.size();
for(int i=0;i<size;i++){
System.out.println(q.dequeue());
}
}
}