【数据结构】数组实现队列

/**
 * 用数组实现队列
 * @author : wangtb
 * @date : 2019-10-04 22:28
 */

public class Array2Queue {

    /**
     * 数据
     */
    private Integer[] arr;

    /**
     * 长度
     */
    private Integer size;

    /**
     * 开始位置
     */
    private Integer start;

    /**
     * 结束位置
     */
    private Integer end;

    public Array2Queue(int initSize) {
        if (initSize < 0) {
            throw new IllegalArgumentException("The init size is less than 0");
        }
        arr = new Integer[initSize];
        size = 0;
        start = 0;
        end = 0;
    }

    public void push(int obj) {
        if (size == arr.length) {
            throw new ArrayIndexOutOfBoundsException("The queue is full");
        }
        size++;
        arr[end] = obj;
        end = end == arr.length - 1 ? 0 : end + 1;
    }

    public Integer poll() {
        if (size == 0) {
            throw new ArrayIndexOutOfBoundsException("The queue is empty");
        }
        size--;
        int tmp = start;
        start = start == arr.length - 1 ? 0 : start + 1;
        return arr[tmp];
    }

}

 

posted @ 2019-10-04 23:22  abs_征召不老  阅读(84)  评论(0)    收藏  举报