今日分享 数组实现队列(java版)
import java.util.Iterator;
public class ArrayQueue<E> implements Queue<E>,Iterable<E> {
private E[] array;
private int head = 0;
private int tail = 0;
@SuppressWarnings("all")
public ArrayQueue(int capacity) {
array = (E[]) new Object[capacity + 1];
}
@Override
public boolean offer(E value) {
if (isFull()) {
return false;
}
array[tail] = value;
tail = (tail + 1) % array.length;
return true;
}
@Override
public E poll() {
if (isEmpty()) {
return null;
}
E remove = array[head];
head = (head + 1) % array.length;
return remove;
}
@Override
public E peek() {
if (isEmpty()) {
return null;
}
return array[head];
}
@Override
public boolean isEmpty() {
return head == tail;
}
@Override
public boolean isFull() {
return (tail + 1) % array.length == head;
}
@Override
public Iterator<E> iterator() {
return new Iterator<E>() {
int p = head;
@Override
public boolean hasNext() {
return p != tail;
}
@Override
public E next() {
E value = array[p];
p = (p + 1) % array.length;
return value;
}
};
}
}
更多推荐

所有评论(0)