数据结构与算法-队列(未完) Posted on 2019-03-25 | Edited on 2022-09-21 | In 数据结构与算法 , 数据结构 队列的作用和实际使用场景 循环队列特点: 没有数组队列在扩容时候O(n)的数据迁移工作 当(tail+1)%n=head时候队列满,当head==tail的时候队列空 因为是环状,所以被enqueue一个元素,tail=(tail+1)%n,每dequeue一个元素,head=(head+1)%n 缺点:tail不能存数据 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051public class CircleQueuqe { private String[] array; private int head = 0; private int tail = 0; private int size = 0; public CircleQueuqe(int size) { this.size = size; array = new String[size]; } public void enque(String s) { //尾指针下一个指向head队列满 if ((tail + 1) % size == head) { throw new RuntimeException("CircleQueuqe has full"); } array[tail] = s; //环状的下一个位置是 tail+1取模 tail = (tail + 1) % size; } public String deques() { if(head==tail){ throw new RuntimeException("CircleQueuqe has empty"); } String ret=array[head]; head=(head+1)%size; return ret; } public String[] getArray() { return array; } public int size() { return size; } @Override public String toString() { return "CircleQueuqe{" + "array=" + Arrays.toString(array) + ", head=" + head + ", tail=" + tail + ", size=" + size + '}'; }}