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实现顺序储存的循环队列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04敏捷管理与看板工具:提升研发、设计、电商团队工作效率的利器
- 2025-01-04智慧养老管理工具如何重塑养老生态?
- 2025-01-04如何打造高绩效销售团队:工具与管理方法的结合
- 2025-01-04解决电商团队协作难题,在线文档工具助力高效沟通
- 2025-01-04春节超市管理工具:解锁高效运营与顾客满意度的双重密码
- 2025-01-046种主流销售预测模型:如何根据场景选用最佳方案
- 2025-01-04外贸服务透明化:增强客户信任与合作的最佳实践
- 2025-01-04重新定义电商团队协作:在线文档工具的战略作用
- 2025-01-04Easysearch Java SDK 2.0.x 使用指南(三)
- 2025-01-04百万架构师第八课:设计模式:设计模式容易混淆的几个对比|JavaGuide