队列也可以用数组来实现,不过这里有个问题,当数组下标满了后就不能再添加了,但是数组前面由于已经删除队列头的数据了,导致空。所以队列我们可以用循环数组来实现,见下面的代码:
package com.cn.test.queue;
public class RoundQueue {
private long a[];
private int size; //数组大小
private int nItems;//实际存储数量
private int front;//头
private int rear;//尾
public RoundQueue(int maxSize){
this.size=maxSize;
a=new long[size];
nItems=0;
front=0;
rear=-1;
}
//判断队列是否为空
public boolean isEmpty(){
return (nItems==0);
}
//判断队列是否已满
public boolean isFull(){
return (nItems==size);
}
//队列实际存储数量大小
public int size(){
return nItems;
}
//往队列添加数据
public void insert(long value){
if(isFull()){
System.out.println("队列已满!");
return;
}
rear= ++nItems%size;
a[rear]=value;//尾指针满了就循环到0处,这句相当于下面注释内容
nItems++;
/*if(rear == size-1){
rear = -1;
}
a[++rear] = value;*/
}
public long remove(){
if(isEmpty()){
System.out.println("队列为空!");
return 0;
}
nItems--;
front =front % size;
return a[front++];
}
public long peek(){
if(isEmpty()){
System.out.println("队列为空!");
return 0;
}
return a[front];
}
//打印 队列
public void display(){
if(isEmpty()){
System.out.println("队列为空!");
return;
}
int item=front;
for(int i=0;i
关注
打赏
热门博文
- Netty——网络编程 NIO(Selector处理accept事件)代码示例
- CompletableFuture异步编排(多任务组合)
- CompletableFuture异步编排(线程串行化代码示例)
- CompletableFuture异步编排(handle最终处理)
- CompletableFuture异步编排(计算完成回调代码示例)
- hutool工具导出excel代码示例
- java 获取音频、视频文件时长代码示例
- PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)
- Rabbitmq与Erlang安装包下载图解
- idea2021.1版本SpringBoot项目日志的说明及使用