/**
* 单进单出循环队列
* @author Administrator
*
*/
public class CircleQueue {
private Object[] m_vect;
private int count;
public CircleQueue() {
m_vect = new Object[10];
}
public CircleQueue(int n) {
if(n>=0) {
m_vect = new Object[n];
} else {
throw new RuntimeException("初始化长度不能小于0:"+ n);
}
}
public boolean isEmpty() {
return count==0;
}
public boolean isFull() {
return count==m_vect.length;
}
/**
* 压栈
*/
public void push(int num) {
if(isFull()) {
throw new RuntimeException("队列已满");
} else {
m_vect[index+count] = num;
count++;
}
}
/**
* 弹出数据
* @return
*/
public Object pull() {
if(isEmpty()) {
throw new RuntimeException("队列以空");
}
@SuppressWarnings("unchecked")
T t = (T)m_vect[index];
m_vect[index] = null;
index = ++index%m_vect.length;
count--;
return t;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}