用C语言实现一个高效率的循环队列
时间: 2023-05-18 09:05:46 浏览: 116
好的,以下是一个用C语言实现的高效率循环队列的代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 100
typedef struct {
int data[MAX_QUEUE_SIZE];
int front;
int rear;
} Queue;
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
int isQueueEmpty(Queue *q) {
return q->front == q->rear;
}
int isQueueFull(Queue *q) {
return (q->rear + 1) % MAX_QUEUE_SIZE == q->front;
}
void enqueue(Queue *q, int x) {
if (isQueueFull(q)) {
printf("Queue is full!\n");
exit(1);
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAX_QUEUE_SIZE;
}
int dequeue(Queue *q) {
if (isQueueEmpty(q)) {
printf("Queue is empty!\n");
exit(1);
}
int x = q->data[q->front];
q->front = (q->front + 1) % MAX_QUEUE_SIZE;
return x;
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printf("%d\n", dequeue(&q));
printf("%d\n", dequeue(&q));
printf("%d\n", dequeue(&q));
return 0;
}
```
这个循环队列使用了一个数组来存储数据,同时使用了 front 和 rear 两个指针来标记队列的头和尾。enqueue 函数用于向队列中添加元素,dequeue 函数用于从队列中取出元素。这个循环队列的实现非常高效,可以在常数时间内完成入队和出队操作。
阅读全文