Day1-数据结构与算法-队列

本文介绍了队列的先进先出特性及其在数组中的实现方式。通过分析数组模拟队列时遇到的问题,如队列满和空的判断,提出了使用环形队列的概念,调整front和rear指针的含义,以实现空间的有效复用。讨论了初始化时队列长度上限的重要性,并指出在无法预估队列长度时应考虑使用链表模拟队列。
摘要由CSDN通过智能技术生成

一.队列的概念

  • 先进先出

  • 有序链表,可用数组或链表实现

  • 数组模拟队列:

    本身是有序列表,需要两个变量front首指针和rear尾指针,maxsize代表队列最大容量

    • front=rear时队列为空
    • rear=maxsize-1时队列为满
  • 这样实现是否有问题?

二.数组模拟队列

编写代码来实现一下数组模拟队列,首先编写一个ArrayQueue类,定义队列的一些基本操作方法:

package com.Queue;

public 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;
        rear = -1;//初始化
    }

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

    //判断队列是否为空
    public boolean isEmpty() {
   
        return rear == front;
    }

    //添加数据到队列
    public void addQueue(int n) {
   
        if (isFull()) {
   
            System.out.println("队列满,不能加入数据");
            return;
        }
        rear++;//rear后移
        arr[rear] = n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值