import java.util.Iterator;

 

public class ArrayQueue<E> implements Queue<E>,Iterable<E> {

    private E[] array;

    private int head = 0;

    private int tail = 0;

 

    @SuppressWarnings("all")

    public ArrayQueue(int capacity) {

        array = (E[]) new Object[capacity + 1];

    }

 

    @Override

    public boolean offer(E value) {

        if (isFull()) {

            return false;

        }

        array[tail] = value;

        tail = (tail + 1) % array.length;

        return true;

    }

 

    @Override

    public E poll() {

        if (isEmpty()) {

            return null;

        }

        E remove = array[head];

        head = (head + 1) % array.length;

        return remove;

    }

 

    @Override

    public E peek() {

        if (isEmpty()) {

            return null;

        }

        return array[head];

    }

 

    @Override

    public boolean isEmpty() {

        return head == tail;

    }

 

    @Override

    public boolean isFull() {

        return (tail + 1) % array.length == head;

    }

 

    @Override

    public Iterator<E> iterator() {

        return new Iterator<E>() {

            int p = head;

 

            @Override

            public boolean hasNext() {

                return p != tail;

            }

 

            @Override

            public E next() {

                E value = array[p];

                p = (p + 1) % array.length;

                return value;

            }

        };

    }

}

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐