我是靠谱客的博主 潇洒小蚂蚁,最近开发中收集的这篇文章主要介绍基于简单循环数组实现队列(JAVA),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

基于简单循环数组实现队列

循环数组
队列抽象数据类型的这种简单实现使用数组,在数组中,采用循环的方式则增加元素,并使用两个变量分别记录队首和队尾元素。通常,使用front变量和rear变量分别表示队列中的队首元素和队尾元素。

基于数组来存储队列中的元素,可能会出现数组被填满的情况。这时,如果执行入队操作,将抛出队列满异常,同样,如果对空队列出栈,会抛出队列空异常

代码

Tips:初始化时,front = rear = -1 代表队列为空

/**
 * 基于简单循环数组的队列实现
 */
public class ArrayQueue {

    private int front;
    private int rear;
    private int capacity;
    private int[] array;

    /**
     * 私有化构造器
     *
     * @param size
     */
    private ArrayQueue(int size) {
        capacity = size;
        front = -1;
        rear = -1;
        array = new int[size];
    }

    /**
     * 静态方法创建固定队列容量的队列
     *
     * @param size
     * @return
     */
    public static ArrayQueue createQueue(int size) {
        return new ArrayQueue(size);
    }

    /**
     * 队列判满
     *
     * @return
     */
    public boolean isFull() {
        return (rear + 1) % capacity == front;
    }

    /**
     * 队列判空
     */
    public boolean isEmpty() {
        return front == -1;
    }

    /**
     * 当前队列容量
     */
    public int getQueueSize() {
        return (capacity - front + rear + 1) % capacity;
    }

    /**
     * 入栈
     */
    public void enQueue(int data) {
        if (isFull()) {
            throw new RuntimeException("Queue is Full!");
        }
        rear = (rear + 1) % capacity;
        array[rear] = data;
        if (front == -1) {
            front = rear;
        }
    }

    /**
     * 出栈
     */
    public int deQueue() {
        Integer data = null;
        if (isEmpty()) {
            throw new RuntimeException("Queue is empty!");
        }
        data = array[front];
        if (front == rear) {
            front = rear - 1;
        } else {
            front = (front + 1) % capacity;
        }
        return data;
    }
}

最后

以上就是潇洒小蚂蚁为你收集整理的基于简单循环数组实现队列(JAVA)的全部内容,希望文章能够帮你解决基于简单循环数组实现队列(JAVA)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部