1. 双端循环的定义:双端循环队列是限定插入和删除操作在表的两端进行的线性表,是一种具有队列和栈的性质的数据结构。
2. 双端循环队列接口的定义:双端循环队列大致思想与循环队列一样,无非在队首可添加可删除,在队尾也可添加可删除。
public interface DoubleLoopQueue<E> extends Queue<E> {
//向双端循环队列的队首添加元素
public void addFirst(E element);
//向双端循环队列的队尾添加元素
public void addLast(E element);
//删除双端循环队列的队首元素
public E removeFirst();
//删除双端循环队列的队尾元素
public E reomveLast();
//获取双端循环队列的队首元素
public E getFirst();
//获取双端循环队列的的队尾元素
public E getLast();
}
3.双端循环队列接口的实现类:双端循环队列一种具有队列和栈的性质的数据结构,因此我们可以使双端循环队列实现队列和栈的接口,但是因为双端循环队列操作特殊,我们仍需从头定义ArrayDoubleLoopQueue。
//实现双端循环队列
public class ArrayDoubleLoopQueue<E> implements DoubleLoopQueue<E>, Stack<E> {
/*
双端循环队列 我们要留出一个空的空间 使尾指针始终指向这个空的空间 这样对判断队满和队空时条件就不会相同 避免了二异性
双端循环队列应该可以向队首和队尾都可以添加元素 并且也可以删除队首和队尾的元素
元素存储就像时一个环一样
*/
//存放数据的容器
private E[] data;
//队首指针
private int front;
//队尾指针
private int rear;
//有效元素的个数
private int size;