队列判空_java数组实现循环队列

循环队列:把存储队列元素的表从逻辑上看成一个环,称为循环队列。当队首front = maxSize - 1后,再前进一个位置就自动到0,这可以利用除法取余运算(%)来实现。

0544ba92b5801952f94a54d92cf3b594.png
package com.ArrayQueue;public class ArrayQueue1 { public static void main(String[] args) { ArrayQueue arrayQueue = new ArrayQueue(5); System.out.println("判空:"+arrayQueue.isEmpty()); System.out.println("执行入队操作···"); arrayQueue.enQueue(1); arrayQueue.enQueue(2); arrayQueue.enQueue(3); arrayQueue.enQueue(4); System.out.println("输出队中的长度:"); System.out.println(arrayQueue.getSize()); System.out.println("队中元素为:"); arrayQueue.getAll(); System.out.println("执行出队操作···"); arrayQueue.deQueue(); System.out.println("队中元素为:"); arrayQueue.getAll(); System.out.println("输出队中的长度:"); System.out.println(arrayQueue.getSize()); } public static class ArrayQueue{ private int front; //队头 private int rear; //队尾 private int maxSize = 5; //最大容量 private int size; //当前队列长度 private int arr[]; //模拟队列的数组 //初始化 public ArrayQueue(int maxSize){ this.maxSize = maxSize; arr = new int[maxSize]; front = 0; rear = 0; size = 0; } //判断队空 public boolean isEmpty(){ return front == rear; } //判断队满 public boolean isFull(){ return (rear+1) % maxSize == front; } //入队 public void enQueue(int n){ if(isFull()){ throw new RuntimeException("队满,不能进行入队操作···"); } size++; arr[rear] = n; rear = (rear+1)%maxSize; } //出队 public int deQueue(){ if(isEmpty()){ throw new RuntimeException("队空,不能进行出队操作···"); } size--; int m = arr[front]; front = (front + 1) % maxSize; return m; } //显示队列中的元素 public void getAll(){ if(isEmpty()){ throw new RuntimeException("队列为空····"); } for(int i = front; i < rear;i++){ System.out.print(arr[i]+" "); } System.out.println(); } //显示队的长度 public int getSize(){ return size; } }}

运行结果如下图所示:

9d12ea503ea677c4b4fc0223898cedf4.png

idea控制运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值