队列接口定义
/**
* 队列顶级接口
*
* @author zyw
*
*/
public interface MyQueue<E> {
/**
* @Desc 入队操作
* @Author zyw
* @Date 2019年3月6日下午7:17:43
*/
void enqueue(E e);
/**
* @Desc 出队操作
* @return E
* @Author zyw
* @Date 2019年3月6日下午7:18:00
*/
E dequeue();
/**
* @Desc 获取队首元素
* @return E
* @Author zyw
* @Date 2019年3月6日下午7:18:19
*/
E getFront();
/**
* @Desc 获取队列元素个数
* @return int
* @Author zyw
* @Date 2019年3月6日下午7:18:53
*/
int getSize();
/**
* @Desc 判断队列是否为空
* @return boolean
* @Author zyw
* @Date 2019年3月6日下午7:19:10
*/
boolean isEmpty();
}
队列接口使用泛型数组实现
public class ArrayQueue<E> implements MyQueue<E> {
private GenericArray<E> array;
public ArrayQueue() {
super();
array = new GenericArray<E>();
}
public ArrayQueue(int capacity) {
super();
this.array = new GenericArray<E>(capacity);
}
@Override
public void enqueue(E e) {
array.addLast(e);
}
@Override
public E dequeue() {
return array.removeFirst();
}
@Override
public E getFront() {
return array.getFirst();
}
@Override
public int getSize() {
return array.getIndex();
}
@Override
public boolean isEmpty() {
return array.getIndex() == 0;
}
@Override
public String toString() {
StringBuilder res = new StringBuilder();
res.append("Queue :");
res.append("front [");
for (int i = 0; i < array.getIndex(); i++) {
res.append(array.get(i));
if (i != array.getIndex() - 1)
res.append(" ,");
}
res.append("] tail");
return res.toString();
}
}