iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >基于Java数组实现循环队列的两种方法小结
  • 227
分享到

基于Java数组实现循环队列的两种方法小结

java数组循环队列 2023-05-30 17:05:28 227人浏览 八月长安
摘要

用java实现循环队列的方法:1、添加一个属性size用来记录眼下的元素个数。目的是当head=rear的时候。通过size=0还是size=数组长度。来区分队列为空,或者队列已满。2、数组中仅仅存储数组大小-1个元素,保证rear转一圈之

用java实现循环队列的方法:

1、添加一个属性size用来记录眼下的元素个数。

目的是当head=rear的时候。通过size=0还是size=数组长度。来区分队列为空,或者队列已满。

2、数组中仅仅存储数组大小-1个元素,保证rear转一圈之后不会和head相等。也就是队列满的时候。rear+1=head,中间刚好空一个元素。

当rear=head的时候。一定是队列空了。

队列(Queue)两端同意操作的类型不一样:

能够进行删除的一端称为队头,这样的操作也叫出队dequeue;

能够进行插入的一端称为队尾,这样的操作也叫入队enqueue。

队列的示意图

基于Java数组实现循环队列的两种方法小结

实现队列时,要注意的是假溢出现象。如上图的最后一幅图。

如图所看到的的假溢出现象

基于Java数组实现循环队列的两种方法小结

解决的方法:使用链式存储,这显然能够。在顺序存储时。我们常见的解决的方法是把它首尾相接,构成循环队列。这能够充分利用队列的存储空间。

循环队列示意图:

基于Java数组实现循环队列的两种方法小结

在上图中。front指向队列中第一个元素。rear指向队列队尾的下一个位置。

但依旧存在一个问题:当front和rear指向同一个位置时,这代表的是队空还是队满呢?大家能够想象下这样的情景。

解决这种问题的常见做法是这种:

使用一标记,用以区分这样的易混淆的情形。

牺牲一个元素空间。当front和rear相等时,为空。当rear的下一个位置是front时。为满。

例如以下图:

基于Java数组实现循环队列的两种方法小结

以下我们给出循环队列,并採用另外一种方式,即牺牲一个元素空间来区分队空和队满的代码.

几个重点:

front指向队头。rear指向队尾的下一个位置。

队为空的推断:front==rear;队为满的推断:(rear+1)%MAXSIZE==front。

import java.io.*;  public class QueueArray {    Object[] a; //对象数组,队列最多存储a.length-1个对象    int front; //队首下标    int rear;  //队尾下标    public QueueArray(){      this(10); //调用其他构造方法    }    public QueueArray(int size){      a = new Object[size];      front = 0;      rear =0;    }       public boolean enqueue(Object obj){      if((rear+1)%a.length==front){        return false;      }      a[rear]=obj;      rear = (rear+1)%a.length;      return true;    }       public Object dequeue(){      if(rear==front){        return null;      }      Object obj = a[front];      front = (front+1)%a.length;      return obj;    }    public static void main(String[] args) {      QueueArray q = new QueueArray(4);      System.out.println(q.enqueue("张三"));      System.out.println(q.enqueue("李斯"));      System.out.println(q.enqueue("赵五"));      System.out.println(q.enqueue("王一"));//无法入队列,队列满      for(int i=0;i<4;i++){        System.out.println(q.dequeue());      }    }  } 

--结束END--

本文标题: 基于Java数组实现循环队列的两种方法小结

本文链接: https://www.lsjlt.com/news/220018.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于Java数组实现循环队列的两种方法小结
    用java实现循环队列的方法:1、添加一个属性size用来记录眼下的元素个数。目的是当head=rear的时候。通过size=0还是size=数组长度。来区分队列为空,或者队列已满。2、数组中仅仅存储数组大小-1个元素,保证rear转一圈之...
    99+
    2023-05-30
    java 数组 循环队列
  • redis实现延时队列的两种方式(小结)
    背景 项目中的流程监控,有几种节点,需要监控每一个节点是否超时。按传统的做法,肯定是通过定时任务,去扫描然后判断,但是定时任务有缺点:1,数据量大会慢;2,时间不好控制,太短,怕一...
    99+
    2022-11-12
  • Java数据结构与算法之循环队列的实现
    目录概述循环队列循环队列实现改变队列大小enqueue 方法dequeue 方法main完整代码 概述 从今天开始, 小白我将带大家开启 Jave 数据结构 & 算法的新篇章...
    99+
    2022-11-12
  • .NETCore基于RabbitMQ实现延时队列的两方法
    目录前言实现延时队列的两种方式利用rabbitmq死信队列x-dead-letter-exchange和x-dead-letter-routing-key.NETCore实现方式ra...
    99+
    2022-11-13
  • C#实现泛型动态循环数组队列的方法
    任务 循环数组 实现目标:(1)创建一个新的数组数据结构;      (2)该数据结构为泛型;      (3)可以按照元素多少进行扩容缩容;      (4)进行添加删除操作的时间...
    99+
    2022-11-13
  • 基于Redis实现延时队列的优化方案小结
    目录一、延时队列的应用二、延时队列的实现三、总结一、延时队列的应用 近期在开发部门的新项目,其中有个关键功能就是智能推送,即根据用户行为在特定的时间点向用户推送相应的提醒消息,比如以下业务场景: 在用户点击充值项后,半小...
    99+
    2022-07-05
    Redis延时队列 Redis延时队列优化
  • Java中的循环队列怎么利用数组实现
    这篇文章将为大家详细讲解有关Java中的循环队列怎么利用数组实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。用Java的数组实现一下循环队列。队列的类//循环队列class CirQueu...
    99+
    2023-05-31
    循环队列 java
  • Java队列数据结构的实现方法是什么
    这篇文章主要介绍“Java队列数据结构的实现方法是什么”,在日常操作中,相信很多人在Java队列数据结构的实现方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java队列数据结构的实现方法是什么”的疑...
    99+
    2023-06-22
  • Python实现基本数据结构中队列的操作方法示例
    本文实例讲述了Python实现基本数据结构中队列的操作方法。分享给大家供大家参考,具体如下: #! /usr/bin/env python #coding=utf-8 class Queue(objec...
    99+
    2022-06-04
    数据结构 队列 示例
  • Java实现把两个数组合并为一个的方法总结
    本文实例讲述了Java实现把两个数组合并为一个的方法。分享给大家供大家参考,具体如下:在Java中,如何把两个String[]合并为一个?看起来是一个很简单的问题。但是如何才能把代码写得高效简洁,却还是值得思考的。这里介绍四种方法,请参考选...
    99+
    2023-05-30
    java 数组合并 ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作