用数组写一个队列。上代码
主要的功能巧在了循环数组的使用
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];
front=0;
rear=-1;
nItems=0;
} //循环数组实现
public void insert(long value){
//入队
if(isFull()){
System.out.println("队列已满");
return;
}
rear = ++rear%size; //如果为0 ,则数组满了。就循环到0处
a[rear]=value;
nItems++;
}
public long remove(){
if(isEmpty()){
System.out.println("队列为空");
return 0;
}
nItems--;
front=front%size;
return a[front++];
}
public void display()
{
if(isEmpty()){
System.out.println("队列为空");
return;
}
int item=front;
for (int i = 0; i <nItems ; i++) {
System.out.println(a[item++ % size]);
}
}
public long peek(){
if(isEmpty()){
System.out.println("队列为空");
}
return a[front];
}
private boolean isFull() {
return (nItems==size);
}
private boolean isEmpty() {
return (nItems==0);
}
}
个人体会:在写代码的过程中,主要的困难在于,找不到适当的约束条件……菜鸟一只,继续加油