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

1、增加一个属性size用来记录目前的元素个数。目的是当head=rear的时候,通过size=0还是size=数组长度,来区分队列为空,或者队列已满。

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

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

下面代码使用第一种方法实现。  你可以尝试写出第二种实现。

public class ArrayQueue {private int[] arr = new int[5];private int size = 0;private int head = 0;private int tail = 0;public static void main(String[] args) {/**  0 bipush 102 istore_13 iload_14 iinc 1 by 17 istore_1*int tail = 10;tail = tail++;****  0 bipush 102 istore_13 iinc 1 by 16 getstatic #5 <java/lang/System.out>9 iload_1* int tail = 10;tail++;System.out.println(tail);* */ArrayQueue arrayQueue = new ArrayQueue();arrayQueue.add(1);arrayQueue.add(2);arrayQueue.add(3);System.out.println(arrayQueue.poll());System.out.println(arrayQueue.poll());System.out.println(arrayQueue.poll());arrayQueue.add(4);arrayQueue.add(5);arrayQueue.add(6);arrayQueue.add(7);arrayQueue.add(8);System.out.println(arrayQueue.poll());System.out.println(arrayQueue.poll());System.out.println(arrayQueue.poll());System.out.println(arrayQueue.poll());System.out.println(arrayQueue.poll());System.out.println(arrayQueue.head +"  "+arrayQueue.tail);//System.out.println(arrayQueue.poll());}public void add(int value){if(tail == head && size == arr.length){System.out.println("队列已经满");return;}arr[tail++] = value;tail = tail%arr.length;size ++;}public int poll(){if(head == tail && size == 0){System.out.println("队列已经空");return -1;}int ret = arr[head++];head = head%arr.length;size--;return ret;}
}

Java数组实现循环队列的两种方法相关推荐

  1. Java数组实现循环队列

    Java数组实现循环队列 上一节(Java实现队列--顺序队列.链式队列)我们使用数组实现了顺序队列,但是在tail == n时会有数据搬移操作,这样入队操作性能就会受到影响.这里我们使用循环队列的解 ...

  2. python去重复排序_Python实现删除排序数组中重复项的两种方法示例

    本文实例讲述了Python实现删除排序数组中重复项的两种方法.分享给大家供大家参考,具体如下: 对于给定的有序数组nums,移除数组中存在的重复数字,确保每个数字只出现一次并返回新数组的长度 注意:不 ...

  3. Java中的string定义的两种方法和区别

    java中的String定义的两种方法和区别 第一种:new方式 String s1 = new String("hello world"); String s2 = new St ...

  4. Java 数组转成集合List三种方法和(数组、集合List、Set相互转换)

    Java 数组转成集合List 三种方法 package com.list;import java.util.ArrayList; import java.util.Arrays; import ja ...

  5. 将数组转化成字符串的两种方法

    将数组转化成字符串的两种方法 let arr = [1,2,8,9,'西瓜']; console.log(arr.toString());//将数组转化为字符串 console.log(arr.toS ...

  6. Java生成二维码的两种方法

    本文介绍Java生成二维码的两种方法,这两种方法都依赖于google提供的二维码依赖包. 一种是自己写工具类,代码可以网上抄. 另一种是使用hutool第三方工具类的依赖包,不用自己抄代码. 一.自定 ...

  7. Java 跨平台获取 MAC 地址的两种方法

    前言 有时我们因为软件授权或者其它需要获取主机唯一标识而需要获取用户主机的MAC地址,而本文则将介绍如何通过Java来实现跨平台获取MAC地址的两种方法,同时具体的代码也已上传到GitHub. 如果不 ...

  8. java对文件进行压缩的两种方法

    在工作中,我们或多或少都会接触到文件的压缩和解压,在window系统中,我们只需下载一个能对文件进行解压缩的应用即可,但如果让我们自己动手写对文件压缩的代码,顿时就头大了. 在java中,我们都知道输 ...

  9. Java实现条件性参加会议问题(两种方法)

    有人邀请A,B,C,D,E,F 6个人参加一项会议,这6个人有些奇怪,因为他们有很多要求,已知: 1)A,B两人至少有1人参加会议:   2)A,E,F 3人中有2人参加会议:   3)B和C两人一致 ...

最新文章

  1. CSS 绘制各种形状
  2. python好多模块和c相识_Python-Cext名称空间与常规Python子模块混合?
  3. 深度学习——02、深度学习入门 8-14
  4. ABAP 代码中,哪些特殊字符不能用于变量命名?
  5. 中国开源产品如何走向世界?
  6. Spring MVC控制流程与简易配置方案
  7. 一步一步手绘Spring MVC运行时序图(Spring MVC原理)
  8. matlab与数学模型相结合例题,数学知识、数学建模、现代数学软件关系 与结合...
  9. 纯注解整合SSM框架
  10. 事实胜于雄辩,经典中的经典,经久…
  11. 95%以上的日常办事启用电子签章,你都体验过哪些?
  12. JWT © pepsi-wyl
  13. 【Spring】注解驱动开发
  14. oracle认证考试指南全册,OCP认证考试指南全册Oracle Database10g
  15. 免费python编程自学网站-可以免费自学编程的12个网站
  16. 安卓自动滑屏脚本_定时滑动屏幕工具脚本下载-定时上下滑动屏幕工具(手机模拟)软件下载v3.1-单游网...
  17. mysql.data.dll 位置_MySqlData.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家...
  18. CAD中 OLE不能旋转_CAD入门学习技巧:图块的各种相关操作和概念汇总(下)
  19. adc0804模数转换实验报告_ADC0804模数转换与显示
  20. 简易六自由度弹道解算软件

热门文章

  1. springMVC 处理json 及 HttpMessageConverter 接口
  2. 给自己新申请的阿里云服务器ECS免费搭建WDCP环境
  3. Cocos2d-x游戏中默认的AndroidManifest.xml的解析
  4. cad二次开发--添加对象到模型空间中
  5. 自己写getElementsByClass()方法
  6. NetLink Communication Mechanism And Netlink Sourcecode Analysis
  7. 用tableView实现的一种加载数据的布局
  8. 开始学习python的感受
  9. 第十一章:集合(一)
  10. 【Android】自定义view-拖动小球移动