欢迎访问宙启技术站
智能推送

Java实现循环队列的函数

发布时间:2023-05-28 18:48:39

循环队列是一种比较常用的队列数据结构,它可以充分利用数组的空间,避免出现队列空间浪费的问题。循环队列有两个指针:front和rear,它们指向队头和队尾元素的位置。当元素入队时,rear指针向后移动;当元素出队时,front指针向后移动。

实现循环队列的函数需要实现以下操作:

1. 初始化队列:在初始化时需要设置队头指针和队尾指针的初始值,一般情况下都是设置为0。

2. 判断队列是否为空:当队头指针和队尾指针相等时,表示队列为空。

3. 判断队列是否已满:当队尾指针+1等于队头指针时,表示队列已满。

4. 入队:将元素插入到队列的队尾,并将队尾指针向后移动。

5. 出队:从队列的队头取出一个元素,并将队头指针向后移动。

6. 计算队列长度:通过队头指针和队尾指针之间的差值来计算队列长度。

下面是Java实现循环队列的代码:

public class CircularQueue {
    private int front;
    private int rear;
    private int maxSize;
    private Object[] queue;

    public CircularQueue(int maxSize) {
        this.maxSize = maxSize;
        queue = new Object[maxSize];
        front = 0;
        rear = 0;
    }

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

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

    public void enqueue(Object item) {
        if (isFull()) {
            throw new RuntimeException("Queue is full");
        }
        queue[rear] = item;
        rear = (rear + 1) % maxSize;
    }

    public Object dequeue() {
        if (isEmpty()) {
            throw new RuntimeException("Queue is empty");
        }
        Object item = queue[front];
        front = (front + 1) % maxSize;
        return item;
    }

    public int size() {
        return (rear - front + maxSize) % maxSize;
    }
}

在上面的代码中,front和rear表示队头和队尾指针,maxSize是队列的最大容量,queue是存放元素的数组。在构造方法中设置初始值,isEmpty和isFull方法用来判断队列是否为空或已满。enqueue方法用来将元素入队,dequeue方法用来从队列中出队并返回出队元素。size方法用来计算队列长度。

总之,Java实现循环队列的函数需要注意队列已满和队列为空两种情况的处理,以及队头指针和队尾指针之间的关系,通过掌握以上内容,相信大家能够很快学会循环队列的实现。