java循环队列_java实现循环队列(顺序队列)
队列和循环队列的唯一区别就是,队列的front和rear对应的元素下标被影射成front%maxSize,rear%maxSize。
/**
* 循环队列
* @param 泛型T
*/
public class CircleSequenceQueue {
private T[] data;
private int front;
private int rear;
public CircleSequenceQueue(int capacity) {
data = (T[]) new Object[capacity];
front = 0;// 队头指针,指向实际队头元素
rear = 0;// 队尾指针,指向实际队尾元素的下一个位置
}
public boolean isEmpty() {
if (front == rear) {
return true;
} else {
return false;
}
}
public boolean isFull() {
if (rear - front >= data.length) {
return true;
} else {
return false;
}
}
public void insert(T t) throws Exception {
if (isFull()) {
throw new Exception("push into full queue exception");
}
data[rear % data.length] = t;
rear++;
}
public void remove() throws Exception {
if (isEmpty()) {
throw new Exception("remove from empty queue exception");
}
front++;
}
/**
* 取得队头元素
*
* @return
* @throws Exception
*/
public T getFront() throws Exception {
if (isEmpty()) {
throw new Exception("remove from empty queue exception");
}
return data[front % data.length];
}
public void show() {
System.out.print("front:" + front + ",rear:" + rear + ",[");
for (int i = front; i
System.out.print(data[i % data.length]);
if (i != rear - 1) {
System.out.print(",");
}
}
System.out.println("]");
}
public static void main(String[] args) throws Exception {
CircleSequenceQueue queue = new CircleSequenceQueue<>(10);
queue.show();
// 插入操作
queue.insert(1);
queue.show();
queue.insert(2);
queue.show();
queue.insert(3);
queue.show();
queue.insert(4);
queue.show();
queue.insert(5);
queue.show();
queue.insert(6);
queue.show();
queue.insert(7);
queue.show();
queue.insert(8);
queue.show();
queue.insert(9);
queue.show();
queue.insert(10);
queue.show();
// 删除操作
queue.remove();
queue.show();
queue.remove();
queue.show();
queue.remove();
queue.show();
queue.remove();
queue.show();
queue.remove();
queue.show();
// 插入操作
queue.insert(11);
queue.show();
queue.insert(12);
queue.show();
queue.insert(13);
queue.show();
queue.insert(14);
queue.show();
queue.insert(15);
queue.show();
}
}
java循环队列_java实现循环队列(顺序队列)相关推荐
- java数据结构 队列_Java数据结构与算法[原创]——队列
声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本文介绍数据结构中的队列(queue)的概念.存储结构.队列的特点,文末给出ja ...
- java for 递归_Java/For循环/递归函数循环
首先:java的重点和难点,命名和缓存 这次咱们的内容主要用到: 命名规则:大小写字母,下划线,美元符号$,数字,且数字不能打头 变量的声明:数据类型划分内存空间,命名,赋值 方法的声明:修饰符列表, ...
- java while语句_Java while循环语句
Java while循环语句 循环语句除了for循环之外还有while和do..while,接下来我们先来看一下while循环,首先学习while循环的语法结构,如下图所示: 图6-29:while循 ...
- java 循环嵌套_Java的循环结构及嵌套循环
Java的循环结构及嵌套循环 Java的循环结构while 循环结构do...while 循环结构for 循环结构 Java的嵌套循环概念循环控制语句breakcontinuereturn forea ...
- java lamda循环条件_Java lambda 循环累加求和代码
java 8 stream 提供了下面几种类型的求和 Stream::mapToInt Stream::mapToDouble Stream::mapToLong public void test() ...
- java while语句_Java while循环
Java while循环用于重复程序的一部分几次或重复执行一个代码块. 如果迭代次数不固定,建议使用while循环. 语法: while(condition){ //code to be execut ...
- java collection 遍历_Java for循环对集合的遍历
原标题:Java for循环对集合的遍历 Java集合类的使用可以说是无处不在,总的我们可以将之分为三大块,分别是从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型集合 ...
- java for循环死循环_Java for循环进化
java for循环死循环 Iteration is one of the most basic requirement in any programming language & of al ...
- java for循环 标记_Java for循环
Java for循环用于多次迭代程序的一部分,或者多次执行同一个代码块.如果迭代次数是固定的,建议使用for循环.java中有三种类型的for循环分别是简单for循环,for-each(增强型for循 ...
最新文章
- Nodejs+express+jade配置
- ubuntu下搭建一个数据化处理的开发环境
- shell-grep命令详解(转)
- 【离散数学中的数据结构与算法】二 欧几里得算法与裴蜀等式
- ES6一些常用的基本语法
- Editplus中添加System.out.println()快捷键
- python数据可视化源码_Python数据分析:数据可视化实战教程
- AndroidStudio安卓原生开发_Android扫描附近指定的蓝牙设备_通过设备名称过滤_计算距离_离扫描设备近的显示的时候放在前面---Android原生开发工作笔记128
- ASP.NET MVC3书店--第二节 控制器(转)
- VASP服务器第一次安装各种软件(上)
- Flash 第二章 基本绘图工具-课堂笔记
- 一周搞定scrapy之3,将爬取到的起点中文网信息保存到mysql
- 大圆航线、恒向线绘制
- 随机森林原始论文_2020年还需要阅读的10篇人工智能论文(附链接)
- 短除法求解最大公约数c语言,[编程入门]最大公约数与最小公倍数-题解(C语言代码)(短除法)...
- oracle实用教程选择题,第3章 表与表数据操作 Oracle实用教程(第3版)PPT.ppt
- 第二部分 项目管理标准
- Android检测太极阴,太极阴xposed安卓最新版
- [c语言]进值转换的详细代码实现(二进制,十进制,十六进制等)
- 嵌入式开发对学历门槛要求高吗?