用数组实现环形队列

public class CircleArray {

    private int maxSize;
    private int front;//环形队列中,front表示队列中的第一个元素;
    private int rear;//队列中最后一个元素的后一个位置
    private int[]arr;//模拟环形队列

    //创建队列
    public CircleArray(int maxSize) {
        this.maxSize = maxSize;
        arr = new int[maxSize];
        front = 0;
        rear = 0;
    }

    //判空
    public boolean isEmpty(){
        if(rear == front)return true;
        else return false;
    }

    //判满
    public boolean isFull(){
        if((rear+1)%maxSize==front)return true;
        else return false;
    }

    //出队列
    public int getQueue(){
        if(isEmpty())throw new RuntimeException("队列为空");
        int sum = arr[front];
        front = (front+1)%maxSize;
        return sum;
    }

    //增加数据
    public void add(int sum){
        if(isFull()){
            System.out.println("队列满");
            return;
        }
        arr[rear] = sum;
        rear = (rear+1)%maxSize;
    }

    //显示队列的元素
    public void showQueue(){
        if(isEmpty()){
            System.out.println("队列为空");
            return;
        }
        for(int i=front;i<front+getSize();i++){
            System.out.print("索引位置:"+i%maxSize+"; 值:"+arr[(i%maxSize)]+",");
            System.out.println();
        }
    }

    //获取元素个数
    public int getSize(){
        return (rear-front+maxSize)%maxSize;
    }

    //显示头部数据
    public int headQueue(){
        if(isEmpty()){
            throw new RuntimeException("队列空");
        }
        return arr[front];
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44895397/article/details/106063051