数据结构(用数组模拟队列)

一:什么是队列?

1.定义:队列是一个有序列表,可以用数组或是链表来表示。

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

二:数组模拟队列

(1)变量

1.maxSize表示该队列的最大容量

2.front和rear分别记录队列前后端的下标(front随着数据输出变化,rear随着数据输入而变化)

(2)思路分析

1.将尾指针往后移:rear+1,当front=rear【空】

2.若尾指针rear小于队列的最大下标maxSize-1,则将数据存入rear所指的数组元素中,否则无法存入数据。rear==maxSize-1【队列满】

(3)代码实现

1.使用数组模拟队列,编写一个ArrayQueue类

//使用数组模拟队列,编写一个ArrayQueue类
class ArrayQueue {
    private int maxSize;//表示数组的最大容量
    private int front;//指向队列头部
    private int rear;//指向队列尾部
    private int[] arr;//该数组用于存放数据,模拟队列

    //创建队列构造器
    public ArrayQueue(int arrMaxSize){
        maxSize = arrMaxSize;
        arr = new int[maxSize];
        front = -1;//指向队列头部,分析出front是指向队列头的前一个位置
        rear = -1;//指向队列尾部,分析指向队列尾部的数据(就是队列的最后一个数据)
    }

2.判断队列是否满

public boolean isFULL(){
        return rear == maxSize-1;
    }

3.判断队列是否为空

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

4.添加数据到队列,入队列

 //添加数据到队列,入队列
    public void addQueue(int n){
        //判断队列是否满
        if(isFULL()){
            System.out.println("队列满");
        }
        rear++;//让rear后移
        arr[rear] = n;
    }

5.获得队列的数据,出队列

 public int getQueue(){
        //判断队列是否为空
        if(isEmpty()){
            throw new RuntimeException("队列空,不能获取数据");
        }
        front++;//front后移
        return arr[front];
    }

6.显示队列的所有数据

public void showQueue(){
        //遍历
        if(isEmpty()){
            System.out.println("队列为空,没有数据");
            return;
        }
        for(int i = 0;i < arr.length;i++){
            System.out.println(arr[i]);
        }
    }

7.显示队列的头数据,注意不是取出数据

public int headQueue(){
        //判断是否为空
        if(isEmpty()){
            throw new RuntimeException("队列为空,不能显示头数据");
        }
        return arr[front+1];
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值