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

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

一、概述:

1、原理:

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

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

2、示例图:

910c18a0fd14317ebc78af7a2cdc9bc7.png

二、实现代码:

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() + " ");

}

}

}

运行结果:

ae54a5501e10ed6ed66829e5ddd6d5f6.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unrecognized option: -jrockit

weblogic报错: starting weblogic with Java version: Unrecognized option: -jrockit Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Starting WLS with line: /data/jdk1.8.0_45/bin/java -jroc…

51nod 1105 第K大的数

基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 数组A和数组B,里面都有n个整数。数组C共有n^2个整数,分别是A[0] * B[0],A[0] * B[1] ......A[1] * B[0],A[1] * B[1]......A[n - 1] * B[n - 1]&#x…

在Tomcat上设置和使用Apache Solr

前一阵子花了一点时间来玩Solr,但立即被我们可以在一些更大的数据集上获得的性能所震撼。 这是我的一些初始设置和配置学习信息,也许可以帮助某人启动它并更快地运行。 首先在Windows上进行设置。 下载并解压缩Apache Tomcat和Solr,然后将其复…

sass变量

sass变量用法 1、sass变量必须以$符开头,后面紧跟着变量名 2、变量值和变量名之间就需要使用冒号(:)分隔开(就像CSS属性设置一样) 3、如果值后面加上!default则表示默认值 默认变量 sass的默认变量:仅需要在值后面加上!defaul…

西安4年java多少时间_西安学习java一般要多久

线程小n行的任务/任务执的数单个量为间隔执行池大所需时间时间,西安学习的配置,西安学习行定行池务的务执c配在执注置任方法时任上标,下解行调问题务的方度任有以异步决办采用法:上述式执。比如、般要多本名(套接套接5套t地地节点…

js 递归函数的使用及常用函数

1.递归函数的使用: 公园里有一堆桃子,猴子每天吃掉一半,挑出一个坏的扔掉,第6天的时候发现还剩1个桃子,问原来有多少个桃子 var peache;function peaches(n) { if (n 6) { peache 1; } else { …

redis分布式锁-SETNX实现

转自:https://my.oschina.net/u/1995545/blog/366381 Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists。这系列的命令非常有用,这里讲使用SETNX来实现…

sql java驱动程序_Microsoft SQL Server JDBC 驱动程序支持矩阵

本页包含 Microsoft SQL Server JDBC 驱动程序的支持矩阵和支持生命周期策略。Microsoft JDBC 驱动程序支持生命周期矩阵和策略Microsoft 支持生命周期 (MSL) 策略提供了与 Microsoft 产品的支持生命周期有关的可预测透明信息。 自驱动程序发布之日起,JDBC 驱动程序…

使用直接内存时可以更快

总览 使用直接内存不能保证提高性能。 考虑到它增加了复杂性,除非有充分的理由使用它,否则应避免使用它。 塞尔吉奥奥利维拉(Sergio Oliveira Jr)的这篇出色文章表明,这不仅仅是使用直接内存来提高性能的问题&#x…

POJ 3977 折半枚举

链接: http://poj.org/problem?id3977 题意: 给你n个数,n最大35,让你从中选几个数,不能选0个,使它们和的绝对值最小 如果有一样的,取个数最小的 题解: np难题,但是因为…

java踩坑记

1.String 相等 稍微有点经验的程序员都会用equals比较而不是用 ,但用equals就真的安全了吗,看下面的代码 user.getName().equals("xiaoming"); 有经验的老司机很快就能看到问题,如果user.getName()为null,就会抛出空指针异常&#…

java taken_java-是否有正确的方法在slf4j中传递参数?

第三变种是最好的。实际上,第一种情况是通过StringBuilder进行的字符串连接。第二和第三种情况相同。他们需要将整数值装箱到Integer(或其他Object),然后创建一个数组来打包它们。在我的机器上进行的简单测试表明,如果不执行日志记录&#xf…

html常用小知识

请求重定向&#xff1a;加载页面之后&#xff0c;除了用js做重定向之外&#xff0c;我们还可以直接用<meta>标签做重定向。 1 <meta http-equiv"refresh" content"5;urlhttp://www.baidu.com" /> 5秒后跳转 超链接&#xff1a;在当前的iframe…

MyEclipse快捷键大全【转】

-------------------------------------MyEclipse 快捷键1(CTRL)-------------------------------------Ctrl1 快速修复CtrlD: 删除当前行 CtrlQ 定位到最后编辑的地方 CtrlL 定位在某行 CtrlO 快速显示 OutLine CtrlT 快速显示当前类的继承结构 CtrlW 关闭当前Editer Ct…

根据您的命令-命令设计模式

命令设计模式是一种广为人知的设计模式&#xff0c;它属于行为设计模式&#xff08;“四人帮”的一部分&#xff09;。 顾名思义&#xff0c;它与应用程序中的动作和事件有关。 问题陈述&#xff1a; 假设有一个网页将在其中包含多个菜单的情况。 编写此代码的一种方法是使条件…

用js和jQuery做轮播图

Javascript或jQuery做轮播图 css样式 <style> a{ text-decoration:none; } .naver{ width: 100%; position:relative; }.images{position:relative;width: 100%;height: 400px; } .images img{position:absolute;left: 0;top: 0;width: 100%;height: 400px;opacity: 0;fi…

w3school前端教程合集

有关前端开发的w3c教程合集。 http://caibaojian.com/w3school/ 地图ajax教程Canvas教程CSS教程CSS3教程CSS3选择器CSS参考手册DHTML教程HTML教程HTML5教程HTML5音频教程HTML DOM教程JavaScript教程jQuery教程jQuery Ajax教程jQuery事件jQuery操作jQuery选择器jQuery遍历json教…

【开发调试】谷歌浏览器中调试移动网页和测试网速下页面效果

、 今天有幸给大家分享一下谷歌浏览器针对移动网页测试的技巧&#xff0c;主要是最近做个微信公共号网站。所以就要对页面测试拉。移动网页我们最长测得就是各种手机大小的页面效果和出现网络问题的效果展示。 今天就简单分享下在谷歌浏览器测试页面的适配和网速限制展示。…

拼多多分享好友砍价Java实现_拼多多砍价怎么分享到朋友圈 砍价发到微信朋友圈方法...

拼多多是一款电商社交的共享式购物平台&#xff0c;现在还推出了砍价的活动&#xff0c;只要邀请好友砍价&#xff0c;你就以最低的价格购买商品&#xff0c;还可以可能是免费拿到&#xff0c;那么今天小编就给大家讲讲如何将自己的砍价信息分享到微信朋友圈。首先下载手机拼多…

通过6个简单的步骤在Windows上运行Apache Hive

注意 &#xff1a;您需要安装cygwin才能运行本教程&#xff0c;因为Hadoop&#xff08;Hive需要&#xff09;需要cygwin才能在Windows上运行。 至少&#xff0c;系统中必须存在Basic&#xff0c;Net&#xff08;OpenSSH&#xff0c;tcp_wrapper软件包&#xff09;和与安全相关的…