public class Queue<Item> {
    private Node first;
    private Node last;
    private  int N;
    private class Node{
        Item item;
        Node next;
    }
    public boolean isEmpty() {return first==0;}
    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;

    }
}

链表是数组的一种重要的替代方式
与下压堆栈的不同点在于增加和删除元素时都得判断队列是否为空,从而调整头和尾指针,增加时为空调整头指针,删除时为空调整尾指针。