class MyCircularQueue {
private int markSize;
private int front;
private int rear;
private int array[];
public MyCircularQueue(int k) {
this.front = 0;
this.rear = 0;
this.markSize = k+1;
array = new int [markSize];
}
public boolean enQueue(int value) {
if(isFull()){
return false;
}
array[rear] = value;
rear = (rear+1)%markSize;
return true;
}
public boolean deQueue() {
if(isEmpty()){
return false;
}
front = (front+1)%markSize;
return true;
}
public int Front() {
if(isEmpty()){
return -1;
}
else{
int value = array[front];
return value;
}
}
public int Rear() {
if(isEmpty()){
return -1;
}
else{
int value = array[(rear - 1 + array.length) % array.length];
return value;
}
}
public boolean isEmpty() {
return front == rear;
}
public boolean isFull() {
return (rear+1)%markSize == front;
}
}
队列数据的总个数:
队列空:
队列满:
队列取尾:
队列取头:
尾部指针变化:
头部指针变化:
front始终指向队列头部。
rear始终指向队列尾部元素的后一个空指针。
==队列中数据的有效个数是比队列长度即一位数组的length少一个的。因为我们这里总有一个位置是空的==
循环队列的实现
最新推荐文章于 2024-08-09 19:02:56 发布