public class CircleSqQueue implements Iqueue{
private Object[] queueElem;
private int front;
private int rear;
private int maxSize;
public CircleSqQueue(int maxSize){
front=rear=0;
queueElem =new Object[maxSize];
this.maxSize=maxSize;
}
@Override
public void clear() {
front=rear=0;
}
@Override
public boolean isempty() {
return front==rear;
}
@Override
public int length() {
return (rear-front+maxSize)%maxSize;
}
@Override
public Object peek() {
if(isempty())
return null;
return queueElem[front];
}
@Override
public void offer(Object x) throws Exception {
if((rear+1)%maxSize==front)
throw new Exception("队列已满");
queueElem[rear]=x;
rear=(rear+1)%maxSize;
}
@Override
public Object poll() {
if(rear==front)
return null;
Object p=queueElem[front];
front=(front+1)%maxSize;
return p;
}
@Override
public void display() {
if(!isempty()){
for(int i =front;i<rear;i=(i+1)%maxSize){
System.out.println(queueElem[i]+" ");
}
}
else {
System.out.println("此队列为空!");
}
}
public static void main(String[] args) throws Exception {
CircleSqQueue q=new CircleSqQueue(20);
String [] arr ={"赵云","卡沙","关羽","吕蒙","范增"};
for(int j=0;j<arr.length;j++){
// System.out.println(arr[j]);
q.offer(arr[j]);
}
q.display();
}
