一.队列的实现,使用ArrayList
关键点,front是最开始插入的元素,而rear是刚刚插入的元素,front先出去,rear后插入后出去
import java.util.*;
class Queue<T>{
private List<T> list=new ArrayList<T>();
public Queue(){
}
public T delQueue(){
return list.remove(0);
}
public void pulQueue(T e){
list.add(e);
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Queue<Integer> q=new Queue<Integer>();
q.pulQueue(1);
q.pulQueue(2);
System.out.println(q.delQueue());
q.pulQueue(3);
System.out.println(q.delQueue());
System.out.println(q.delQueue());
}
}
二.循环队列的实现
class CircleQueue<T>{
private int size=0;
private int front=0;
private int rear=0;
private Object array[]=null;
private int maxSize=0;
public CircleQueue(int size){
this.maxSize=size;
array=new Object[maxSize];
}
public boolean put(T t){
if(size<=maxSize){
int tag=rear%maxSize;
array[tag]=t;
size++;
rear++;
return true;
}
else
{
return false;
}
}
public T take(){
if(size>0){
size--;
int tag=front%maxSize;
front++;
T temp=(T)array[tag];
array[tag]=null;
return temp;
}else{
return null;
}
}
}
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
CircleQueue<Integer> cq=new CircleQueue<Integer>(5);
cq.put(1);
// cq.put(2);
// cq.put(3);
// cq.put(4);
// cq.put(5);
// cq.put(6);
System.out.println(cq.take());
System.out.println(cq.take());
}
}