数组模拟队列思路

2023-03-02 09:33:13 浏览数 (1)

队列

队列介绍

队列是一个有序列表,可以用链表或数组实现。

遵循先入先出的原则:即先存入队列的数据要先取出,后存入队列的数据要后取出。

实现思路

插入元素:

每次插入数据前需要判断队列是否已经满了,满了则无法插入。

如果队列未满,可以在头部将元素进行插入。

删除元素:

每次删除元素前需要判断是否还有元素。

删除元素,把第一位元素(最新插入的元素)进行删除,把队列中后面的元素往前挪动一位。

代码示例

代码语言:javascript复制
public class ArrayQueue {
    private int maxSize;
    private int front;
    private int rear;
    private int[] arr;
    /**
     * 构造器,新建队列
     */
    public ArrayQueue(int arrMaxSize){
        maxSize = arrMaxSize;
        arr =new int[arrMaxSize];
        front = -1;             //队列当前开头位置
        rear = -1;              //队列当前结尾位置
    }

    /**
     * 判断当前队列是否满了
     */
    public boolean isFull(){
        return rear == maxSize-1;
    }

    /**
     * 往队列里面添加一个数,返回是否成功的布尔类型
     */
    public boolean insertArray(int num){
        if(isFull()){
            System.out.println("已满,无法添加!");
            return false;
        }
        arr[  rear] = num;
        return true;
    }

    /**
     * 从队列里面抽出一个数出来,返回是否成功的布尔类型
     */
    public int deleteArray(){
        //首先判断队列中是否有元素
        if(front==rear){        //当前队列并没有元素,返回-1
            return 0;
        }
        //当前队列有元素,需要将结尾位置减去1,并且将数组元素全部往前面挪动一位,然后函数返回抽出来的元素
        int returnNum = arr[0];
        for(int i=1;i<=rear;i  ){
            arr[i-1]=arr[i];
        }
        rear--;
        return returnNum;
    }
    /**
     * 遍历当前数组的所有元素并且将其输出
     */
    public void outPut(){
        for (int i=0;i<=rear;i  ){
            System.out.print(arr[i] " ");
            System.out.println();
        }
    }
}

版权属于: 吃猫的鱼

本文链接: https://cloud.tencent.com/developer/article/2230965

作品声明:未经许可,禁止转载!

0 人点赞