第一种使用的是java.util.Queue自带的队列库
第二种为循环队列,创建时必须确定该队列的大小,除了不可以扩容,其他基本上感觉都比自带的好,速度也快
java
import java.util.Queue;
import java.util.LinkedList;
class util_queue{ //使用自带的Queue
public Queue<Integer>queue=new LinkedList<>();
public boolean isEmpty() {
return queue.isEmpty();
}
//向队尾加入数字
public void offer(int num) {
queue.offer(num);
}
//从头拿元素
public int poll() {
return queue.poll();
}
//拿头元素,但是不弹出
public int peek() {
return queue.peek();
}
public int size() {
return queue.size();
}
}
class Q{
public int[] queue;
int l=0,r=0;
Q(int size){
queue=new int[size+1]; //本身会浪费一个空间,用来判断是否为空数组或队满
}
public boolean isEmpty() {
return l==r;
}
public boolean isFull() {
return (r+1)%queue.length==l;
}
public boolean offer(int data) {
if(this.isFull())return false;
queue[r]=data;
r=(r+1)%queue.length;
return true;
}
public int poll() {
if(this.isEmpty()) {
return 0;
}
l=(l+1)%queue.length;
return queue[(l-1+queue.length)%queue.length];
}
public int peek() {
if(this.isEmpty())return 0;
return queue[l];
}
public int size() {
return r-l;
}
}
public class queue {
public static void main(String[] args) {
//自行实现
}}