java数组实现循环队列操作

循环队列:把存储队列元素的表从逻辑上看成一个环,称为循环队列。当队首front = maxSize - 1后,再前进一个位置就自动到0,这可以利用除法取余运算(%)来实现。

在这里插入图片描述
代码:

package com.ArrayQueue;

public class ArrayQueue1 {
    public static void main(String[] args) {
        ArrayQueue arrayQueue = new ArrayQueue(5);
        System.out.println("判空:"+arrayQueue.isEmpty());
        System.out.println("执行入队操作···");
        arrayQueue.enQueue(1);
        arrayQueue.enQueue(2);
        arrayQueue.enQueue(3);
        arrayQueue.enQueue(4);
        System.out.println("输出队中的长度:");
        System.out.println(arrayQueue.getSize());
        System.out.println("队中元素为:");
        arrayQueue.getAll();
        System.out.println("执行出队操作···");
        arrayQueue.deQueue();
        System.out.println("队中元素为:");
        arrayQueue.getAll();
        System.out.println("输出队中的长度:");
        System.out.println(arrayQueue.getSize());
    }


    public static class ArrayQueue{
        private int front; //队头
        private int rear;   //队尾
        private int maxSize = 5; //最大容量
        private int size;   //当前队列长度
        private int arr[];  //模拟队列的数组


        //初始化
        public ArrayQueue(int maxSize){
            this.maxSize = maxSize;
            arr = new int[maxSize];
            front = 0;
            rear = 0;
            size = 0;
        }
        //判断队空
        public boolean isEmpty(){
            return front == rear;
        }
        //判断队满
        public boolean isFull(){
            return (rear+1) % maxSize == front;
        }
        //入队
        public void enQueue(int n){
            if(isFull()){
                throw new RuntimeException("队满,不能进行入队操作···");
            }
            size++;
            arr[rear] = n;
            rear = (rear+1)%maxSize;
        }
        //出队
        public int deQueue(){
            if(isEmpty()){
                throw new RuntimeException("队空,不能进行出队操作···");
            }
            size--;
            int m = arr[front];
            front = (front + 1) % maxSize;
            return m;
        }
        //显示队列中的元素
        public void getAll(){
            if(isEmpty()){
                throw new RuntimeException("队列为空····");
            }
            for(int i = front; i < rear;i++){
                System.out.print(arr[i]+" ");
            }
            System.out.println();
        }
        //显示队的长度
        public int getSize(){
            return size;
        }
    }



}

运行结果如下
在这里插入图片描述

发布了86 篇原创文章 · 获赞 5 · 访问量 8906

猜你喜欢

转载自blog.csdn.net/qq_35367566/article/details/103470506
今日推荐