C语言建立顺序循环队列
时间: 2024-12-18 13:22:41 浏览: 7
在C语言中,我们可以使用数组来创建一个简单的顺序循环队列。循环队列的特点是当队列满时,新的元素会从队列头部开始插入,形成一个循环;同样,当队列为空时,试图删除的元素会从队头开始处理,形成一个循环。
以下是创建一个基本的循环队列结构体和两个操作函数(入队enqueue和出队dequeue)的示例:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int front; // 队首指针
int rear; // 队尾指针
int data[MAX_SIZE]; // 存储数据的数组
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = -1;
q->rear = -1;
}
// 入队操作
void enqueue(Queue *q, int value) {
if (q->rear == (q->front + MAX_SIZE - 1) % MAX_SIZE) { // 判断队满
printf("Queue is full.\n");
return;
}
q->rear = (q->rear + 1) % MAX_SIZE; // 循环更新队尾
q->data[q->rear] = value;
if (q->front == -1) { // 如果队列为空,则更新队首
q->front = q->rear;
}
}
// 出队操作
int dequeue(Queue *q) {
if (q->front == -1) { // 判断队空
printf("Queue is empty.\n");
return -1; // 返回错误码
}
int value = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE; // 循环更新队首
if (q->front == q->rear) { // 队列只剩一个元素,需要检查是否再次变为空
q->front = -1;
}
return value;
}
阅读全文