第一种使用的是java.util.Queue自带的队列库
第二种为循环队列,创建时必须确定该队列的大小,除了不可以扩容,其他基本上感觉都比自带的好,速度也快
import java.util.Queue;
import java.util.LinkedList;
class util_queue{ //使用自带的Queuepublic 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) {//自行实现}}