循环队列的入队c语言代码
时间: 2024-11-22 19:05:38 浏览: 25
循环队列是一种特殊的线性表,它通过将队尾指针(rear)指向第一个元素的位置来实现“队满”的效果,当添加新元素时,会自动替换掉队首元素。以下是C语言中创建并实现循环队列入队操作的基本代码:
```c
#include <stdio.h>
#define MAX_SIZE 50
typedef struct {
int data[MAX_SIZE];
int rear; // 队尾指针
int front; // 队首指针,初始值为-1
} Queue;
// 初始化循环队列
void initialize(Queue* q) {
q->front = -1;
}
// 入队操作(如果队列未满)
bool enqueue(Queue* q, int value) {
if ((q->front == -1 && q->rear == 0) || (q->rear + 1) % MAX_SIZE != q->front) { // 判断队列是否已满
q->rear = (q->rear + 1) % MAX_SIZE; // 后进先出原则,队尾指针加一并取模
q->data[q->rear] = value;
return true;
}
else {
printf("Queue is full.\n");
return false;
}
}
int main() {
Queue q;
initialize(&q);
// 示例:尝试入队
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3); // 这里会正常入队,因为队列大小为50,当前只占用了3个位置
return 0;
}
```
在这个例子中,`enqueue`函数首先检查队列是否已满,然后更新队尾指针,并将新元素存入数组。如果队列满了,则返回false表示无法入队。
阅读全文