队列基础知识-Java

基本概念

队列(Queue)是一个有序的元素集合,其中新元素总是被添加到队尾,而删除操作则发生在队头。 这种特性使得队列成为一种线性数据结构,其操作遵循FIFO(先入先出)原则。

图解

环形队列注意点:

1 有效元素区间为[frount,rear)

2 判断为空:front == rear

3 判断为满:(rear + 1) % 队列长度 == front

基本操作

入队(addQueue):在队尾添加一个新元素。

出队(getQueue):从队头删除一个元素。

队列长度(size):返回队列中当前元素的数量。

判断队列是否为空(isEmpty):检查队列是否为空,如果为空则返回true,否则返回false。

判断队列是否已满(isFull):检查队列是否已满,如果已满则返回true,否则返回false。

展示队列中的内容(showQueue)。

代码演示

class CircleArrayQueue_ {
    private int maxSize; // 表示数组最大容量
    private int frount;
    // frount 变量的含义:frount 就指向队列的第一个元素,也就是arr[frount]
    private int rear;
    // rear 队列尾 指向队列最后一个元素的下一个位置,
    private int[] arr;
    public CircleArrayQueue_(int arrMaxSize) {
        maxSize = arrMaxSize;
        arr = new int[maxSize];
    }

    public boolean isFull() {
        return (rear + 1) % maxSize == frount;
    }

    public boolean isEmpty() {
        return rear == frount;
    }

    // 增加数据到队列
    public void addQueue(int n ) {
        if (isFull()) {
            System.out.println("队列已满,不能添加数据!");
            return;
        }
        arr[rear] = n;
        rear = (rear + 1 )% maxSize;
    }

    //取出队列中的数据
    public int getQueue() {
        if (isEmpty()) {
            throw new RuntimeException("队列空,不能取出数据!");
        }
        int value = arr[frount];
        frount = (frount + 1) % maxSize;
        return value;
    }
    // 显示队列数据
    public void showQueue() {
        if (isEmpty()) {
            System.out.println("队列空的,没有数据!");
        }
        for (int i = frount; i < size(); frount++) {
            System.out.println(arr[i]);
        }
    }
    public int size() {
        return (rear + maxSize - frount) % maxSize;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值