循环队列
循环队列
关键:位置向后移动一位的操作方法。(rear-front+size)%size;求元素个数

循环队列是人们臆想出来的循环,解决单排队列空间无法重复利用的情况。底层实现就是用数组实现。但是保留了最后一个位置为标志位。
循环队列的结构
bool isEmpty() {
return front == rear;
}
bool isFull() {
return front == (rear + 1) % size;
}
//进队列
void EnQueue(int data) {
if (isFull()) {
printf("error:The Queue Is Full!");
return;
}
Data[rear] = data;
rear = (rear + 1) % size;
}
//出队列并返回
void DeQueue() {
if (isEmpty()) {
printf("error:The Queue Is Empty!");
return;
}
//逻辑上删除
front = (front + 1) % size;
}
//得到队头元素
int top() {
return Data[front];
}
队列移动不是 front++,而是通过front=(front+1)%size,这样空出了最后一个为标志位。实现循环队列。int QueueLength(struct Queue *p)
作者:程序员包子,转载请注明原文链接:https://www.cnblogs.com/coder-baozi/articles/16785197.html
coder-baozi一位菜鸟码农

循环队列实现
浙公网安备 33010602011771号