java实现顺序储存的循环队列
2021/11/13 9:11:39
本文主要是介绍java实现顺序储存的循环队列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- java 实现循环队列
- 代码
java 实现循环队列
底层数组;
数据是先进先出,像排队一样。
代码
/** * 循环队列,顺序储存 * 底层是数组 * 不管是入队还是出队,都是向数组下一项移动的,可以这样:新的数组下标 = (没移动前的下标 + 1) % 数组长度 * 比如: * 数组长度为6,队头在数组下标为3的位置即数组最后,队尾在数组下标为5的位置即数组最后; * 再入队,队尾要跑到数组下标为0的位置即数组开头,number = (5 + 1) % 6 = 0; * 出队也是这样。 */ public class Queue<E> { // 数组 private Object[] array; // 数组总长度,一共可以储存19个元素 private int len = 20; // 队头 private int front = 0; // 队尾 private int rear = 0; // 队列中储存元素的个数 private int size = 0; // 初始化数组 public Queue(){ array = new Object[len]; } // 初始化队列长度 public Queue(int len){ this.len = len; array = new Object[len]; } // 获取元素个数 public int getSize(){ return size; } // 入队 public void enQueue(E e){ // 判断队列是否满了 if(size != len - 1){ array[rear] = e; rear = (rear + 1) % len; // 实现循环入队 size ++; } else System.out.println("抱歉,队列已满,无法存入"); } // 队头元素出队 public E deQueue(){ // 判断队内是否有元素 E e = null; if(size != 0){ e = (E) array[front]; front = (front + 1) % len; // 实现循环队列入队 size --; } return e; } // 获取队头元素 public E getHead(){ E e = null; if(size != 0) e = (E)array[front]; return e; } // 获取队尾 public E getLast(){ E e = null; if(size != 0){ if(rear != 0) e = (E)array[rear - 1]; else e = (E)array[len - 1]; } return e; } }
public class Demo { // 输出相关数据 public static void print(Queue queue){ System.out.println("队内元素个数:" + queue.getSize()); System.out.println("队头:" + queue.getHead()); System.out.println("队尾:" + queue.getLast()); } public static void main(String[] args){ Queue<String> queue = new Queue<>(5); // 入队 queue.enQueue("1"); queue.enQueue("2"); queue.enQueue("3"); queue.enQueue("4"); print(queue); // 出队 queue.deQueue(); queue.deQueue(); print(queue); // 入队 queue.enQueue("5"); queue.enQueue("6"); print(queue); // 入队 queue.enQueue("7"); print(queue); } }
结果: 队内元素个数:4 队头:1 队尾:4 队内元素个数:2 队头:3 队尾:4 队内元素个数:4 队头:3 队尾:6 抱歉,队列已满,无法存入 队内元素个数:4 队头:3 队尾:6
这篇关于java实现顺序储存的循环队列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?