使用c语言实现循环队列
时间: 2023-10-23 11:14:00 浏览: 152
好的,下面是 C 语言实现循环队列的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define QUEUE_SIZE 5 // 队列的最大容量
typedef struct {
int *data; // 存储队列元素的数组指针
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue *queue) {
queue->data = (int*)malloc(sizeof(int) * QUEUE_SIZE);
queue->front = queue->rear = 0;
}
// 判断队列是否为空
int isEmpty(Queue *queue) {
return queue->front == queue->rear;
}
// 判断队列是否已满
int isFull(Queue *queue) {
return (queue->rear + 1) % QUEUE_SIZE == queue->front;
}
// 入队操作
int enqueue(Queue *queue, int value) {
if (isFull(queue)) {
printf("Queue is full!\n");
return 0;
}
queue->data[queue->rear] = value;
queue->rear = (queue->rear + 1) % QUEUE_SIZE;
return 1;
}
// 出队操作
int dequeue(Queue *queue, int *value) {
if (isEmpty(queue)) {
printf("Queue is empty!\n");
return 0;
}
*value = queue->data[queue->front];
queue->front = (queue->front + 1) % QUEUE_SIZE;
return 1;
}
int main() {
Queue queue;
initQueue(&queue);
// 入队操作
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
// 出队操作
int value;
dequeue(&queue, &value);
printf("Dequeued value: %d\n", value);
// 再次入队
enqueue(&queue, 4);
// 打印队列中的元素
while (!isEmpty(&queue)) {
dequeue(&queue, &value);
printf("%d ", value);
}
printf("\n");
return 0;
}
```
以上代码实现了循环队列的基本操作,包括入队、出队、判断队列是否为空或已满等。需要注意的是,在循环队列中,队头和队尾指针的更新需要采用取模运算,以保证队列的循环使用。
阅读全文