涉及的Array类请看数据结构之JAVA数组重写
package com.ws.scala;
/**
* 队列 Queue
* 队列也是一种线性数据结构; 相比数组,队列对应的操作是数组的子集
* 只能从一端 (队尾) 添加元素,只能从另一端 (队首) 取出元素
* 队列是一种先进先出的数据结构(先到先得); First In First Out (FIFO)
*/
public interface MyQueue<E> {
//入队 队尾插入
void enqueue(E e);
//出队 移除队首
E dequeue();
//查看队首元素
E getFront();
//查看队列大小
int getSize();
//队列是否为空
boolean isEmpty();
}
package com.ws.scala;
public class ArrayQueue<E> implements MyQueue<E> {
private Array<E> array ;
public ArrayQueue(){
array = new Array<>();
}
public ArrayQueue(int capacity){
array = new Array<>(capacity);
}
//时间复杂度 O(1)
public int getCapacity(){
return array.getCapacity();
}
//时间复杂度 O(1),考虑插入队尾的时候扩容,平摊为O(1)
@Override
public void enqueue(E e) {
array.addLast(e);
}
//时间复杂度为O(n)
@Override
public E dequeue() {
return array.removeFirst();
}
//时间复杂度为O(1)
@Override
public E getFront() {
return array.getValue(0);
}
//时间复杂度为O(1)
@Override
public int getSize() {
return array.getSize();
}
//时间复杂度为O(1)
@Override
public boolean isEmpty() {
return array.getSize() == 0 ? true : false;
}
}