鄙人写的一个泛型java循环队列
/**
* 泛型循环队列
*
* kinglion
*/
public class Queue<T> {
final int Defaultsize=50;
private T element[];
private int size;
private int front;
private int rear;
private int count;
public Queue(){
}
@SuppressWarnings("unchecked")
public void Qinit(){
size=Defaultsize;
element =(T[])(new Object[size]); //注意java不支持 泛型数组,c++里面支持 故需要类型转换下
}
public Boolean Qempty(){
return front==rear;
}
public Boolean Qfull(){
return (rear+1)%size==front;
}
public int Qlength(){
return count;
}
public void Qinsert(T item){
if(count==size){
System.out.println("队列已满,不能再加入");
return ;
}
count++;
element[rear]=item;
rear=(rear+1)%size;
}
public void Qdelete(){
if(count>0){
element[front]=null;
count--;
front=(front+1)%size;
}
}
public T QgetIndex(int index){
if(count<0||element[index]==null)
return null;
return element[index];
}
public T Qgetfront(){
if(count>0){
return element[front];
}
return null;
}
public void clearQueue(){
front=0;
rear=0;
count=0;
}
public static void main(String args[]){
Queue<String> queue=new Queue<String>();
queue.Qinit();
for(int i=0;i<10;i++){
queue.Qinsert("Str"+i);
}
queue.Qdelete();
queue.Qdelete();
queue.Qdelete();
queue.Qdelete();
queue.Qdelete();
System.out.println(queue.QgetIndex(1));
System.out.println(queue.count);
System.out.println(queue.QgetIndex(queue.rear-1));
}
}