算法——先进先出队列

来源:互联网 发布:如何用阿里云os系统 编辑:程序博客网 时间:2024/06/05 03:57
public class Queue<Item> implements Iterable<Item> {    private Node first;    private Node last;    private int N;    private class Node{        Item item;        Node next;    }    public int size(){        return N;    }    public boolean isEmpty(){        return first == null;    }    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() {        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;        }        @Override        public void remove() {            throw new UnsupportedOperationException();        }    }}

这里要注意特殊情况,当入队列的时候,如果为空,那要first = last,出队列的时候,如果为空,要设置last为空。

0 0