队列,是一种先进先出的 数据结构,类似于 排队取票, 排在前面的先取票
使用java数组实现简单的队列 ,当然,也可以用链表实现
public class Queue {
private Integer[] elements;
private int items;
private int size;
private int front;
private int tail;
public Queue(int size) {
this.size = size;
this.elements = new Integer[size];
tail = -1;
front = 0;
}
public void offer(Integer ele) {
if (isFull()) {
throw new RuntimeException("is full");
}
if (tail == size - 1) {
tail = -1;
}
elements[++tail] = ele;
items++;
}
public Integer pop() {
if (isEmpty()) {
throw new RuntimeException("not element");
}
if (front == size) {
front = 0;
}
Integer ele = elements[front++];
items--;
return ele;
}
public boolean isEmpty() {
return items == 0;
}
public boolean isFull() {
return items == size;
}
public Integer peek() {
return elements[front];
}
public static void main(String[] args){
Queue queue=new Queue(4);
queue.offer(1);
queue.offer(2);
queue.offer(3);
queue.offer(4);
System.out.println(queue.pop());
System.out.println(queue.pop());
System.out.println(queue.pop());
queue.offer(7);
queue.offer(8);
queue.offer(9);
System.out.println(queue.pop());
System.out.println(queue.pop());
System.out.println(queue.pop());
System.out.println(queue.pop());
}
}
此处是固定了长度的队列,也可以使用 扩容,比如当到达了maxsize就扩容一倍,
此队列是一种循环式的,当不断添加元素,下标会重新从 开始。