队列也可以用数组来实现,不过这里有个问题,当数组下标满了后就不能再添加了,但是数组前面由于已经删除队列头的数据了,导致空。所以队列我们可以用循环数组来实现,见下面的代码:
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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?