数据结构———>队列

一、使用场景

银行排队,政务大厅排队(排队取号)

二、队列定义

1、队列是一个有序列表,可以用数组或是链表来实现
2、先入先出原则,即:先存入的数据先取出,后存入的数据后取出
3、队列示意
在这里插入图片描述

三、数组模拟队列

代码实现

//数组模拟队列
class Queue{
    
    
    private int maxSize;//数组容量
    private int front;//队列头
    private int rear;//队列尾
    private int[] Array;//存放数据,模拟队列

    //创建queue类的构造器
    public Queue(int arrMaxSize) {
    
    
        maxSize = arrMaxSize;//数组的最大长度
        Array=new int[maxSize];
        front=-1;//指向队列头部,front是指队列头的前一个位置
        rear=-1;//指向队列尾部,rear是值队列的尾部
    }

    //判满
    public boolean isFull(){
    
    
        return rear==maxSize-1;
    }

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

    //添加数据到队列(入队)
    public void addQueue(int data){
    
    
        //判满
        if(isFull()){
    
    
            return;
        }
        rear++;//rear后移,数据入队
        Array[rear]=data;
    }

    //获取队列数据(出队)
    public int getQueue(){
    
    
        //判空(没有数据当然出不了队)
        if(isEmpty()){
    
    
            //抛出异常
            throw new RuntimeException("队列为空");
        }
        front++;//头指正向后移,取数据
        return Array[front++];
    }
    //显示队列所有数据
    public void showQueue(){
    
    
        //判空
        if(isEmpty()){
    
    
            System.out.println("队列为空");
            return;
        }
        //遍历
        for (int i = 0; i <Array.length ; i++) {
    
    
            System.out.printf("arr[%d]=%d\n",i,Array[i]);
        }
    }
    //显示队列头数据(队列的第一个数据)
    public int headQueue(){
    
    
        //判空
        if(isEmpty()){
    
    
            throw new RuntimeException("队列为空");
        }
        return Array[front+1];
    }
}

四、 队列实现思路

/**
 * 队列思路分析
 * 1、创建一个使用数组模拟队列的类
 *      1.1定义maxsize 表示数组的最大容量
 *      1.2定义front   表示队列头
 *      1.3定义rear    表示队列尾巴
 *      1.4定以int型数组arr  用于存放数据
 *  2、创建队列的构造器
 *      1.1front=-1;指向队列头部
 *      1.2rear=-1;指向队列尾部
 *  3、判满
 *  4、判空
 *  5、编写添加数据的方法,入队列
 *  6、编写获取数据的方法,出队列
 *  7、编写显示队列所有数据的方法
 *  8、编写显示头数据的方法
 */

猜你喜欢

转载自blog.csdn.net/weixin_46457946/article/details/119121982