java实现循环队列

这里给出用数组实现的循环队列。采用牺牲一个单元格的方式判断队列满

结构体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class MyQueue {
private int[] data;
private int front;//头 删
private int rear;//尾 插
private int max;

public MyQueue(int max) {
this.max = max;
data = new int[max];
front = 0;
rear = 0;
}

}

操作

入队

1
2
3
4
5
6
7
8
// 入队 从rear入队
public void enQueue(int value){
// 判断队列是否已满 采用牺牲单元格的做法
if((rear+1)%max == front)
throw new RuntimeException("队列满");
data[rear] = value;
rear = (rear+1)%max;
}

出队

1
2
3
4
5
6
7
8
9
// 出队
public int deQueue(){
// 队列为空 不能出队
if(front == rear)
throw new RuntimeException("队列空");
int value = data[front];
front = (front+1)%max;
return value;
}