用数组实现队列
public class ArrayQueue implements Queue {
private int[] array;
private int size;
private int head;
private int tail;
ArrayQueue(int initCap) {
array = new int[initCap];
size = 0;
head = 0;
tail = 0;
}
@Override
public boolean enqueue(int data) {
if (size == array.length) {
//队列已满
return false;
}
if (tail == array.length) {
//队列未满但是后面没有空间了,需要搬移数据
for (int i = head; i < tail; i++) {
array[i - head] = array[i];
}
head = 0;
tail = head + size;
}
array[tail++] = data;
size++;
return true;
}
@Override
public int deque() {
if (isEmpty()){
return -1;
}
int v = array[head++];
size--;
return v;
}
@Override
public boolean isEmpty() {
return size == 0;
}
@Override
public int size() {
return size;
}
@Override
public void clear() {
head = 0;
tail = 0;
size = 0;
}
}
最后更新于
这有帮助吗?