Java数据结构之循环队列简单定义与用法示例

网友投稿 274 2023-03-23


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 stkPtwlQatic 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操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringMVC实现表单验证功能详解
下一篇:React Native验证码倒计时工具类分享
相关文章

 发表评论

暂时没有评论,来抢沙发吧~