用数组实现简单队列

书中人 2024年01月15日 310次浏览

用数组实现简单队列

public class ArrayQueue {
    //定义一个数组
    private int[] quere;
    //定义一个队列长度
    private int size = 0;
    //定义一个首位
    private int first = 0;
    //定义一个结尾
    private int end = -1;

    //初始化队列大小
    private ArrayQueue() {
    }

    public ArrayQueue(int size) {
        quere = new int[size];
        first = 0;
        end= -1;
        size = 0;
    }

    public boolean isFull() {
        if (size >= quere.length) {
            throw new NoSuchElementException("队列已满");
        }
        return false;
    }
    public boolean isEmpty(){
        return size == 0;
    }

    //入队
    public void enqueue(int data) {
        //判断是否已经满了
        if (!this.isFull()) {
            end = (end + 1) % quere.length;
            quere[end] = data;
            size++;
        }
    }

    //查看队首
    public int peek() {
        if (isEmpty()) {
            throw new NoSuchElementException("队列为空");
        }
        return quere[first];
    }
    
    //出队
    public int dequeue() {
        if (isEmpty()) {
            throw new NoSuchElementException("队列为空");
        }
        int val = quere[first];
        first = (first + 1) % quere.length;
        size--;
        return val;
    }

    public static void main(String[] args) {
        ArrayQueue arrayQueue = new ArrayQueue(8);
        arrayQueue.enqueue(0);
        arrayQueue.enqueue(1);
        arrayQueue.enqueue(2);
        arrayQueue.enqueue(3);
        arrayQueue.enqueue(4);
        arrayQueue.enqueue(5);
        arrayQueue.enqueue(6);
        arrayQueue.enqueue(7);
        System.out.println(Arrays.toString(arrayQueue.quere));
        System.out.println(arrayQueue.peek());
        System.out.println(Arrays.toString(arrayQueue.quere));
        System.out.println(arrayQueue.dequeue());
        System.out.println(arrayQueue.dequeue());
        System.out.println(Arrays.toString(arrayQueue.quere));
        arrayQueue.enqueue(8);
        arrayQueue.enqueue(9);
        System.out.println(Arrays.toString(arrayQueue.quere));
        System.out.println(arrayQueue.dequeue());
        System.out.println(arrayQueue.dequeue());
        System.out.println(Arrays.toString(arrayQueue.quere));
        System.out.println(arrayQueue.peek());
        arrayQueue.enqueue(10);
        arrayQueue.enqueue(11);
        arrayQueue.enqueue(12);
        System.out.println(Arrays.toString(arrayQueue.quere));
    }