循环队列

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();
}

image

posted @ 2022-10-19 16:44  Selina风乎舞雩  阅读(16)  评论(0)    收藏  举报