实现循环队列

/**
 * 循环队列
 */
public class CircularQueue implements Queue {

    private int[] array;
    private int size;
    private int head;
    private int tail;


    public CircularQueue(int initCap) {
        array = new int[initCap + 1];
        size = 0;
        head = 0;
        tail = 0;
    }

    @Override
    public boolean enqueue(int data) {
        //注意队列已满的条件
        if ((tail + 1) % array.length == head) {
            return false;
        }
        array[tail] = data;
        size++;
        tail = (tail + 1) % array.length;
        return true;
    }

    @Override
    public int deque() {
        if (isEmpty()) {
            return -1;
        }
        int v = array[head];
        head = (head + 1) % array.length;
        size++;
        return v;
    }

    @Override
    public boolean isEmpty() {
        return size == 0;
    }

    @Override
    public int size() {
        return size;
    }

    @Override
    public void clear() {
        size = 0;
        tail = head;
    }
}

最后更新于

这有帮助吗?