定义四个变量,头,尾和size,以及limit,初始都为0
-
加入x,放尾,尾++到limit - 1,尾回到0,前提size小于数组上限
-
弹出头,拿头,头++到limit- 1,头回0,前提size大于0
coding如下:
//设计循环队列,环形数组
public static class Queue3{
public int[] queue;
//l为头指针,r为尾指针,size代表队列中的元素个数,limit表示队列元素个数的上限
public int l, r, size, limit;
// 同时存在于队列中的最多元素个数
public Queue3(int k){
queue = new int[k];
l = r = size = 0;
limit = k;
}
// 添加元素
public boolean enQueue(int val) {
if (isFull()) {
return false;
} else {
queue[r] = val;
r = r == limit - 1 ? 0 : (r + 1);
size++;
return true;
}
}
// 弹出元素
public boolean deQueue(){
if (isEmpty()){
return false;
}else {
l = l == limit - 1 ? 0:(l + 1);
size--;
return true;
}
}
// 获取队头的元素
public int Front(){
if (isEmpty()){
return -1;
}else {
return queue[l];
}
}
// 获取队尾的元素
public int Rear(){
if (isEmpty()){
return -1;
}else {
int last = r == 0? limit - 1 : r - 1;
return queue[last];
}
}