c语言怎么清空循环队列
时间: 2024-09-27 16:15:40 浏览: 43
在C语言中,清空一个循环队列(Circular Queue)通常涉及两个步骤:首先,需要找到队列的头元素,然后将所有元素逐一出队,直到队列为空。这里假设队列已经初始化,并有一个指向队首的指针front和一个表示队尾的指针rear。
1. 检查队列是否为空:如果front等于rear,说明队列为空,无需操作。
2. 如果队列非空,遍历队列出队每个元素:
- 将front指针向后移动一位(更新front = (front + 1) % MAX_SIZE),指向下一个元素(MAX_SIZE是队列的最大容量)。
- 如果到达了队尾,即front == rear,再次检查队列为空的情况。
以下是一个简单的示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int front; // 队首指针
int rear; // 队尾指针
} Queue;
// 初始化循环队列
void init(Queue* queue) {
queue->front = queue->rear = 0;
}
// 清空循环队列
void empty(Queue* queue) {
if (queue->front != queue->rear) {
queue->front = 0; // 将头指针设为0
while (queue->front != queue->rear) {
// 出队并移除当前元素
queue->front = (queue->front + 1) % MAX_SIZE;
}
}
}
// 示例使用
int main() {
Queue q;
init(&q);
// ... 添加元素到队列 ...
empty(&q);
return 0;
}
```
阅读全文