用c语言做一个环形队列出来
时间: 2024-01-29 09:03:22 浏览: 79
好的,以下是用C语言实现环形队列的代码:
```
#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
} Queue;
void init(Queue *q) {
q->front = q->rear = 0;
}
int is_empty(Queue q) {
return q.front == q.rear;
}
int is_full(Queue q) {
return (q.rear + 1) % MAX_SIZE == q.front;
}
void enqueue(Queue *q, int x) {
if (is_full(*q)) {
printf("Queue is full.\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAX_SIZE;
}
int dequeue(Queue *q) {
if (is_empty(*q)) {
printf("Queue is empty.\n");
return -1;
}
int x = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
return x;
}
int main() {
Queue q;
init(&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));
dequeue(&q);
return 0;
}
```
这个环形队列的实现方式是用一个数组来存储队列中的元素,同时维护两个指针 front 和 rear 分别指向队列的头部和尾部。当队列满时,rear 指针指向数组的最后一个元素,再往后插入元素就会形成环形。当队列为空时,front 和 rear 指针指向同一个位置。enqueue 函数用于插入元素,dequeue 函数用于删除元素。
阅读全文