package BasicData;
/**
* ʵ�ֻ������ݽṹQueue(����)
*
* @author Administrator
*
*/
public class MyQueue<T> {
private int head;
private int tail;
private T[] elements;
private static final int DEFAUL_SIZE = 10;
private int numOfelements;
public MyQueue() {
head = 0;
tail = 0;
numOfelements = 0;
setCapacity(DEFAUL_SIZE);
}
public MyQueue(int capacity) {
head = 0;
tail = 0;
numOfelements = 0;
setCapacity(capacity);
}
@SuppressWarnings("unchecked")
private void setCapacity(int capacity) {
elements = (T[]) new Object[capacity];
}
public boolean enQueue(T t) {
if (numOfelements == elements.length) {
return false;
} else {
elements[tail] = t;
numOfelements++;
if (tail == elements.length)
tail = 0;
else
tail++;
return true;
}
}
public T deQueue() {
if (head == tail) {
return null;
} else {
T t = elements[head];
numOfelements--;
elements[head] = null;
if (head == elements.length)
head = 0;
else {
head++;
}
return t;
}
}
public boolean isEmpty() {
return numOfelements == 0;
}
public int size() {
int msize = head - tail;
return msize > 0 ? msize : -msize;
}
}