Java代码实现循环队列的示例代码

下面是Java代码实现循环队列的完整攻略。

理解循环队列的概念

循环队列是一种常用的队列数据结构,与普通队列的区别在于,当队列的队尾到达队列的最后一个位置时,再插入一个元素时,队尾会从队列的开头重新开始(即环状)。这样既可以节省空间,又可以提高存取效率。

代码实现

定义循环队列类

首先,我们需要定义一个循环队列类。代码如下:

public class CircularQueue {

    private int[] queue; // 队列数组
    private int front; // 队头指针
    private int rear; // 队尾指针
    private int size; // 队列大小

    // 创建循环队列
    CircularQueue(int capacity) {
        queue = new int[capacity];
        front = 0;
        rear = 0;
        size = 0;
    }

    // 入队
    public void enqueue(int data) {
        if (isFull()) {
            throw new RuntimeException("队列已满");
        }
        queue[rear] = data;
        rear = (rear + 1) % queue.length;
        size++;
    }

    // 出队
    public int dequeue() {
        if (isEmpty()) {
            throw new RuntimeException("队列为空");
        }
        int data = queue[front];
        front = (front + 1) % queue.length;
        size--;
        return data;
    }

    // 判断队列是否已满
    private boolean isFull() {
        return (rear + 1) % queue.length == front;
    }

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

}

在定义类时,我们定义了4个成员变量:

  • 队列数组 queue,用于存放队列元素。
  • 队头指针 front,指向队头元素。
  • 队尾指针 rear,指向队尾元素。
  • 队列大小 size,记录队列中元素的数量。

类中有两个构造方法:默认构造方法和指定大小的构造方法。我们可以通过调用构造方法来创建循环队列对象。

在类中定义了 enqueuedequeue 两个方法,分别用于入队和出队操作。入队操作会将元素加入到队列中。当队列已满时,会抛出异常。出队操作会从队列中移除一个元素,并返回队头元素的值。当队列为空时,会抛出异常。

最后,我们在类中定义了两个私有方法 isFullisEmpty,用于判断队列是否已满和是否为空。

示例说明1:循环队列入队操作

下面通过一个示例来说明循环队列的入队操作。

CircularQueue queue = new CircularQueue(5);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);

在这个示例中,我们创建了一个队列对象,指定了队列的大小为5。然后对该队列进行入队操作,依次插入值为1、2、3、4、5的元素。当插入第5个元素时,队列已满,无法再插入元素,抛出异常。

示例说明2:循环队列出队操作

下面通过一个示例来说明循环队列的出队操作。

CircularQueue queue = new CircularQueue(5);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);
queue.dequeue();
queue.dequeue();

在这个示例中,我们创建了一个队列对象,并插入值为1、2、3、4、5的元素。然后对该队列进行出队操作,依次移除队头元素。当移除前两个元素时,队列中还有3个元素。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java代码实现循环队列的示例代码 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 详解如何探测小程序返回到webview页面

    探测小程序返回到webview页面主要有两个部分:小程序侧的操作和webview侧的操作。 小程序侧的操作 步骤一:调用小程序JSAPI 小程序提供了navigateBackMiniProgram的JSAPI,可以在小程序内部调用,从而返回webview页面。 wx.navigateBackMiniProgram({ success: function() …

    Java 2023年5月23日
    00
  • Java实战之课程在线学习系统的实现

    Java实战之课程在线学习系统的实现 系统需求分析与设计 在开始实现课程在线学习系统之前,我们首先需要进行系统需求分析与设计。在这个阶段中,我们需要明确系统的功能要求和设计系统所需的技术栈。 系统功能要求 在课程在线学习系统中,我们需要实现以下功能: 用户注册、登录和信息修改 用户课程的浏览、学习和评价 管理员添加、删除、修改课程信息 管理员管理用户信息和课…

    Java 2023年5月18日
    00
  • 关于spring5的那些事:@Indexed 解密

    下面是关于 “关于 Spring5 的那些事: @Indexed 解密” 的完整攻略: 标题 1. @Indexed 的作用是什么 Spring数据可访问性框架(spring-data)提供了一个注解@Indexed,用于标记一个实体类(Entity)中的属性,使其被包含在全文搜索索引(Full Text Search Index)中。在使用Elastics…

    Java 2023年5月31日
    00
  • springmvc处理异步请求的示例

    在 Spring MVC 中,我们可以使用异步请求来提高 Web 应用的性能和响应速度。本文将详细讲解 Spring MVC 处理异步请求的示例,包括如何使用 @ResponseBody 注解和 DeferredResult 类,并提供两个示例说明。 使用 @ResponseBody 注解 在 Spring MVC 中,我们可以使用 @ResponseBod…

    Java 2023年5月18日
    00
  • java8学习教程之lambda表达式的使用方法

    Java 8 学习教程之Lambda表达式的使用方法 Lambda表达式是什么? Lambda表达式是Java 8中的一个新特性,它允许我们以一种更简洁的方式来定义匿名内部类。通过使用Lambda表达式,我们可以在一行代码中定义函数接口的实现,并且可以直接将Lambda表达式传递给接口方法。 Lambda表达式的语法 Lambda表达式的语法非常简单,它有以…

    Java 2023年5月26日
    00
  • Java异常处理中的try-with-resources语句的作用是什么?

    Java中的异常处理是一门非常重要的技术,可以使程序在面对问题时,不至于直接崩溃而不能继续执行。一种常见的Java异常处理语句就是try-catch语句,它能够捕获代码块中的异常并进行处理。在Java 7中,又引入了try-with-resources语句,它是一个功能强大、易于使用的语言结构,广泛用于异常处理中。 try-with-resources语句可…

    Java 2023年4月27日
    00
  • Java读写txt文件时防止中文乱码问题出现的方法介绍

    Java读写txt文件时防止中文乱码问题出现的方法介绍: 使用UTF-8编码方式对文件进行读写操作 在Java读写txt文件时,可以使用UTF-8编码方式对文件进行读写操作,这样可以避免中文乱码问题的出现。具体操作示例如下: // 读文件时设置编码方式为UTF-8 BufferedReader br = new BufferedReader(new Inpu…

    Java 2023年5月20日
    00
  • Java class文件格式之方法_动力节点Java学院整理

    Java class文件格式之方法_动力节点Java学院整理 在Java中,每个方法都有一个对应的Java虚拟机指令集。在Java源代码被编译成Java字节码之后,它们会被组织成一个或多个Java类文件。这些Java类文件都采用类似的格式进行组织,即Java class文件格式。 Java class文件格式中包含了一些关于Java类的元信息,诸如类名、超类…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部