JAVA环形队列

Posted 军临天下jyj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA环形队列相关的知识,希望对你有一定的参考价值。

 采用循环队列时,队列中共有元素:(rear+maxSize-front)%maxSize

ArrayQueue1.java

public class ArrayQueue1 {
    private int maxSize;//最大容量
    private int front;//队列头
    private int rear;//队列尾
    private int arr[];
    //创建队列
        public void creatArrayQueue(int arrMaxSize) {
            maxSize = arrMaxSize;
            arr = new int[maxSize];
            //指向队列前一个位置
            front = 0;//头指针
            rear = 0; //尾指针
        }
        //判断队列是否满
        public boolean isFull() {
            if((rear+1)%maxSize == front) 
                return true;
            else
                return false;
        }
        //判断队列是否为空
        public boolean isEmpty() {
            if(front == rear)
                return true;
            else
                return false;
        }
        //入队
        public void addQueue(int n) {
            //判断是否已满
            if(isFull() == true)
            {
                System.out.println("队列已满");
                return;
            }
            arr[rear] = n;
            rear = (rear+1) % maxSize ;
        }
        //出队
        public int getQueue() {
            //判断队列是否为空
            if(isEmpty() == true) {
                System.out.println("队列为空");
                return -1;
            }
            int x = arr[front];
            front = (front+1) % maxSize;
            return x;
        }
        //显示队列的所有数据
        public void showQueue(){
            if(isEmpty() == true)
            {
                System.out.println("队列为空");
                return;
            }
            for(int i = front; i < front+size(); i++)
            {
                System.out.println(arr[(i%maxSize)]);
            }
        }
        public int size() {
            return (rear+maxSize-front)%maxSize;
        }
}

test.java

public class test{
    public static void main(String[] args) {
        //创建一个队列
        ArrayQueue1 a = new ArrayQueue1();
        a.creatArrayQueue(6);
        System.out.println(a.isEmpty());
        a.addQueue(1);
        a.addQueue(3);
        a.getQueue();
        a.showQueue();
        System.out.println("-------------");
        a.addQueue(5);
        a.addQueue(7);
        a.addQueue(3);
        a.addQueue(2);
        a.showQueue();
        System.out.println(a.isFull());//此时虽然队列中的有效数字只有4个,不到5个,但是rear指针已经移到了maxSize-1的位置了。
    }
}

输出:

true
3
-------------
3
5
7
3
2
true

结果图示:

以上是关于JAVA环形队列的主要内容,如果未能解决你的问题,请参考以下文章

Java数据结构 -- 环形队列 & 数组模拟环形队列

超强解析环形队列,简析单项,双向队列及基础功能实现---风之java

JAVA环形队列

使用数组模拟普通队列,环形队列,(Java数据结构之队列)

java数据结构,一个案例带你用数组模拟队列,环形队列!

# Java 常用代码片段