java循环的概念_Java数据结构之循环队列简单定义与用法示例
本文实例讲述了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数据结构之循环队列简单定义与用法示例相关推荐
- python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...
本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...
- java循环基础知识_Java基础知识·循环语句
掘友们,大家好呀,我是宸道. 今天要讲解的是Java基础的循环语句,虽然很基础但还是希望大家看完,就当时复习知识了,基础越牢固越好,对我们是有很大帮助的. 相关推荐 循环语句可以在满足循环条件的情况下 ...
- Java的基本概念(3) 判断和循环
一:顺序结构 按照一定顺序正常执行 //顺序结构,正常执行 public class OrderDemo {public static void main(String[] args) {System ...
- java循环基础知识_java基础知识—循环结构
1.while 循环 语法:while(循环操作){ 循环操作: } 特点:先判断,再执行: 2. == :用于数字比较 比较的是地址 equals: 用于字符串比较 比较的是字符 3.do-whil ...
- java的程序概念_Java程序基本概念
大家好,在这里跟大家讲解一下关于Java程序的基本概念应用. 以下本人的介绍包括有以下的几点: 一.标识符的定义 二.数据类型的划分 三.运算符的应用 四.分支结构.循环结构.循环控制语法的应用 五. ...
- java中ajax概念_Java之AJAX概念和实现方式
Java之AJAX概念和实现方式 开发工具与关键技术:MyEclipse 10,java 作者:刘东标 撰写时间:2019-06-12 1.概念: Asynchronous JavaScript An ...
- java变量类型概念_java变量类型
ps:在java基础的学习过程中,经常会碰到各种java概念,所以做一个总结. 局部变量与全局变量 java区分局部变量和全局变量 局部变量是作用域很小的变量,一般定义在方法中,存储在栈内存空间中. ...
- 循环队列的java结构_java数据结构之循环队列(数组实现)
package com.ws.队列.数组环形队列; //环形数组队列 //判断满:尾+1%队列长度==头 //添加数据:要(尾+1)%数组长度 //取出数据:要(头+1)%数组长度 因为这两个都是循环 ...
- Java循环添加文件_java – 使用jGit循环提交文件
我已经成功地掌握了jGit文件的基础知识,包括连接到repos以及添加,提交甚至循环文件的提交消息. File gitDir = new File("/Users/myname/Sites/ ...
最新文章
- C4D和Redshift:2D矢量到三维渲染 Cinema 4D and Redshift: 2D vector to 3D render
- Keras Data augmentation(数据扩充)
- 2018-06-22 第四十七天 oracle
- Angular jasmine TestBed.configureTestingModule的工作原理
- 使用Spring Boot,JHipster和React构建照片库PWA
- mongoDB 基础指令
- C#环境下利用VS2017使用MapXtreme7.0.0开发桌面应用实例
- 【HUST】网安|计算机网络安全实验|实验二 DNS协议漏洞利用实验
- Arcgis重分类无法赋新值为小数
- 游戏建模中3DMAX里面的【烘焙规范】大盘点
- eda交通灯控制器波形输入_EDA实验报告实验四:交通灯控制器设计
- 34岁程序员面试美团被拒绝:只招30岁以下,卖力能加班工资又少的
- Java基础 -> 从键盘获取不同的输入类型(String,int,double,boolean)(Scanner)
- css学习笔记之图像
- EAUML日拱一卒 用例扩展关系
- 大搜车面试java_大搜车面试经验
- 布道微服务_16服务端故障的紧急避险措施
- 智能手机排排坐,十大操作系统下的旗舰手机
- sofa源码学习----启动获取ServerConfig流程
- 两相步进电机的控制及其实现
热门文章
- android 广告弹出层,安卓广告活动弹窗控件 android-adDialog
- android拍照功能无预览,Android 无预览拍照
- 前端全栈大佬是如何使用javaScript实现一个轮播图
- 我是如何用Jquery实现网页缩小放大的
- SVN:请求不到主机,应该如何解决?
- mysql用大白话解释_Java基础--2021Java面试题系列教程--大白话解读
- 本地项目antd 修改.less文件导致内存溢出
- React之函数中的this指向
- 基于python语言下的UI自动化测试框架搭建(四)
- 面试题4,打印出100-999所有的“水仙花数”。