循环队列:我的理解就是当出队时,出队前面的元素为空,造成了资源浪费,利用循环队列避免了这一浪费,他就相当于一个环形扣。他的底层实现是数组。
下面是代码实现:
package com.snow.队列;
public interface Queue<E> {
public int getSize();
public boolean isEmpty();
public void clear();
/**
* 入队一个新元素e
* */
public void enqueue(E e);
/**
* 出队一个元素e
* */
public E dequeue();
/**
* 获取队首元素(不删除)
* */
public E getFront();
/**
* 获取队尾元素(不删除)
* */
public E getRear();
}
package com.snow.队列;
public class ArrayQueueLoop<E> implements Queue<E>{
private E[] data;
private int front;
private int rear;
private int size;
private static int DEFAULT_SIZE=10;
public ArrayQueueLoop() {
this(DEFAULT_SIZE);
data = (E[]) new Object[DEFAULT_SIZE];
front =0;
rear = 0;
size = 0;
}
public ArrayQueueLoop(int capacity){
data=(E[]) new Object[capacity+1];
front=0;
rear=0;
size=0;
}
@O