写一个循环队列的出队入队的c语言代码
时间: 2024-11-05 15:25:51 浏览: 4
当然可以。这里是一个简单的循环队列(Circular Queue)的 C 语言实现,包括出队(Dequeue)和入队(Enqueue)操作:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int front; // 队头元素索引
int rear; // 队尾元素索引
int data[MAX_SIZE]; // 存储数据的数组
} CircularQueue;
// 初始化队列
void init(CircularQueue* queue) {
queue-1;
queue->rear = -1;
}
// 入队(Enqueue)
bool enqueue(CircularQueue* queue, int value) {
if ((queue->rear + 1) % MAX_SIZE == queue->front) { // 队满
printf("Queue is full.\n");
return false;
}
queue->data[(queue->rear + 1) % MAX_SIZE] = value;
queue->rear = (queue->rear + 1) % MAX_SIZE;
if (queue->front == -1) queue->front = 0; // 如果队列为空,更新front
return true;
}
// 出队(Dequeue)
int dequeue(CircularQueue* queue) {
if (queue->front == -1) { // 队空
printf("Queue is empty.\n");
return -1;
}
int removedValue = queue->data[queue->front];
queue->front = (queue->front + 1) % MAX_SIZE;
if (queue->front == queue->rear) queue->rear = -1; // 队列为空时,更新rear
return removedValue;
}
// 测试函数
int main() {
CircularQueue q;
init(&q);
enqueue(&q, 1); // 入队1
enqueue(&q, 2); // 入队2
enqueue(&q, 3); // 入队3
printf("Dequeued: %d\n", dequeue(&q)); // 出队并打印结果
printf("Dequeued: %d\n", dequeue(&q)); // 再次尝试出队
return 0;
}
```
这个例子中,我们创建了一个`CircularQueue`结构体,包含队头和队尾指针,以及一个大小固定的数组用于存储元素。出队和入队操作分别实现了当队列满或空时的特殊处理。
阅读全文