本文实例讲述了Java数据结构之循环队列简单定义与用法。分享给大家供大家参考,具体如下:

一、概述:

1、原理:

与普通队列的区别在于循环队列添加数据时,如果其有效数据end == maxSize - 1(最大空间)的话,end指针又移动到-1的位置

删除数据时,如果head== maxSize时 head指针移动到0的位置

2、示例图:

二、实现代码:

package com.java.queue;

/**

* @描述 对列

* @项目名称 Java_DataStruct

* @包名 com.java.stack

* @类名 Queue

* @author chenlin

* @version 1.0

* @SVN $Rev$

*/

public class CycleQueue {

private long[] arr;

private int maxSize;// 最大空间

private int len;// 有效长度

private int head;// 队头

private int end;// 队尾

public CycleQueue(int size) {

this.maxSize = size;

this.arr = new long[maxSize];

this.len = 0;

this.head = 0;

this.end = -1;

}

/**

* 从队尾插入数据

*

* @param value

*/

public void insert(long value) {

//如果满了,为什么是maxSize - 1 ,因为从-1开始

if (end == maxSize - 1) {

end = -1;

}

arr[++end] = value;

len++;

}

/**

* 从队头移除数据

*/

public long remove() {

long result = arr[head++];

if (head == maxSize) {

head = 0;

}

len--;

return result;

}

/**

* 判断是否为空

*

* @return

*/

public boolean isEmpty() {

return (len == 0);

}

/**

* 判断是否满了

*

* @return

*/

public boolean isFull() {

return (len == maxSize);

}

/**

* 获得队列的有效长度

*

* @return

*/

public int size() {

return len;

}

public static void main(String[] args) {

CycleQueue queue = new CycleQueue(50);

queue.insert(22);

queue.insert(33);

queue.insert(44);

queue.insert(534);

queue.insert(21);

queue.insert(55);

System.out.println("脚本之家测试结果:");

while (!queue.isEmpty()) {

System.out.print(queue.remove() + " ");

}

System.out.println();

queue.insert(33);

queue.insert(13);

queue.insert(23);

while (!queue.isEmpty()) {

System.out.print(queue.remove() + " ");

}

}

}

运行结果:

希望本文所述对大家java程序设计有所帮助。

java循环的概念_Java数据结构之循环队列简单定义与用法示例相关推荐

  1. python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...

    本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...

  2. java循环基础知识_Java基础知识·循环语句

    掘友们,大家好呀,我是宸道. 今天要讲解的是Java基础的循环语句,虽然很基础但还是希望大家看完,就当时复习知识了,基础越牢固越好,对我们是有很大帮助的. 相关推荐 循环语句可以在满足循环条件的情况下 ...

  3. Java的基本概念(3) 判断和循环

    一:顺序结构 按照一定顺序正常执行 //顺序结构,正常执行 public class OrderDemo {public static void main(String[] args) {System ...

  4. java循环基础知识_java基础知识—循环结构

    1.while 循环 语法:while(循环操作){ 循环操作: } 特点:先判断,再执行: 2. == :用于数字比较 比较的是地址 equals: 用于字符串比较 比较的是字符 3.do-whil ...

  5. java的程序概念_Java程序基本概念

    大家好,在这里跟大家讲解一下关于Java程序的基本概念应用. 以下本人的介绍包括有以下的几点: 一.标识符的定义 二.数据类型的划分 三.运算符的应用 四.分支结构.循环结构.循环控制语法的应用 五. ...

  6. java中ajax概念_Java之AJAX概念和实现方式

    Java之AJAX概念和实现方式 开发工具与关键技术:MyEclipse 10,java 作者:刘东标 撰写时间:2019-06-12 1.概念: Asynchronous JavaScript An ...

  7. java变量类型概念_java变量类型

    ps:在java基础的学习过程中,经常会碰到各种java概念,所以做一个总结. 局部变量与全局变量 java区分局部变量和全局变量 局部变量是作用域很小的变量,一般定义在方法中,存储在栈内存空间中. ...

  8. 循环队列的java结构_java数据结构之循环队列(数组实现)

    package com.ws.队列.数组环形队列; //环形数组队列 //判断满:尾+1%队列长度==头 //添加数据:要(尾+1)%数组长度 //取出数据:要(头+1)%数组长度 因为这两个都是循环 ...

  9. Java循环添加文件_java – 使用jGit循环提交文件

    我已经成功地掌握了jGit文件的基础知识,包括连接到repos以及添加,提交甚至循环文件的提交消息. File gitDir = new File("/Users/myname/Sites/ ...

最新文章

  1. C4D和Redshift:2D矢量到三维渲染 Cinema 4D and Redshift: 2D vector to 3D render
  2. Keras Data augmentation(数据扩充)
  3. 2018-06-22 第四十七天 oracle
  4. Angular jasmine TestBed.configureTestingModule的工作原理
  5. 使用Spring Boot,JHipster和React构建照片库PWA
  6. mongoDB 基础指令
  7. C#环境下利用VS2017使用MapXtreme7.0.0开发桌面应用实例
  8. 【HUST】网安|计算机网络安全实验|实验二 DNS协议漏洞利用实验
  9. Arcgis重分类无法赋新值为小数
  10. 游戏建模中3DMAX里面的【烘焙规范】大盘点
  11. eda交通灯控制器波形输入_EDA实验报告实验四:交通灯控制器设计
  12. 34岁程序员面试美团被拒绝:只招30岁以下,卖力能加班工资又少的
  13. Java基础 -> 从键盘获取不同的输入类型(String,int,double,boolean)(Scanner)
  14. css学习笔记之图像
  15. EAUML日拱一卒 用例扩展关系
  16. 大搜车面试java_大搜车面试经验
  17. 布道微服务_16服务端故障的紧急避险措施
  18. 智能手机排排坐,十大操作系统下的旗舰手机
  19. sofa源码学习----启动获取ServerConfig流程
  20. 两相步进电机的控制及其实现

热门文章

  1. android 广告弹出层,安卓广告活动弹窗控件 android-adDialog
  2. android拍照功能无预览,Android 无预览拍照
  3. 前端全栈大佬是如何使用javaScript实现一个轮播图
  4. 我是如何用Jquery实现网页缩小放大的
  5. SVN:请求不到主机,应该如何解决?
  6. mysql用大白话解释_Java基础--2021Java面试题系列教程--大白话解读
  7. 本地项目antd 修改.less文件导致内存溢出
  8. React之函数中的this指向
  9. 基于python语言下的UI自动化测试框架搭建(四)
  10. 面试题4,打印出100-999所有的“水仙花数”。