队列相比与栈的特点是先进先出,和日常生活中的排队是一样的。
写一个简单队列:
public class Queue {
private Object[] data;
private int maxSize; //队列的最大长度
private int front; //队头
private int rear; //队尾
private int length; //队列当前长度
public Queue(int size){ //初始化队列
this.maxSize = size;
this.front = this.rear = 0;
this.data = new Object[maxSize];
}
public boolean empty(){ // 判断队列是否为空
return this.length == 0;
}
public void insert(Object o){ //入队
if(maxSize == rear){
System.out.println("队满");
return;
}else{
data[rear] = o;
rear = (rear + 1)%maxSize;
length ++;
}
}
public void peek(){ //查看队首元素
if(empty()){
System.out.println("队列为空!");
return;
}
System.out.println(data[front]);
}
public void delete(){ //出队
if(empty()){
System.out.println("队列为空!");
return;
}
data[front] = null; //释放队首元素
front = (front+1)%maxSize; //队首指针加1
length-- ; //队列实际长度-1
}
public void printQueue() {
if(empty()) {
System.out.println("队列为空!");
return;
}
for(int i = 0; i < length; i++) {
System.out.print(data[front++ %maxSize] + " ");
}
}
}