用c在函数里实现入队循环队列
时间: 2024-11-12 14:32:32 浏览: 7
在C语言中,入队(enqueue)操作通常涉及到更新循环队列的队尾。以下是一个简单的循环队列入队函数的实现示例:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int capacity;
int front;
int rear;
int* array;
} Queue;
// 初始化循环队列
Queue* initQueue(int max_size) {
Queue* queue = (Queue*)malloc(sizeof(Queue));
queue->capacity = max_size;
queue->front = queue->rear = -1;
queue->array = (int*)malloc(max_size * sizeof(int));
return queue;
}
// 入队操作(循环队列)
void enqueue(Queue* queue, int value) {
// 检查队列是否已满
if (queue->rear + 1 == queue->capacity) {
queue->rear = 0; // 由于是循环队列,如果到达最大容量,则回到队首
} else {
queue->rear = (queue->rear + 1) % queue->capacity; // 更新队尾
}
// 将新元素添加到队尾
queue->array[queue->rear] = value;
}
// 测试函数
int main() {
Queue* queue = initQueue(MAX_SIZE);
// 入队示例
enqueue(queue, 1);
enqueue(queue, 2);
enqueue(queue, 3);
// 打印队列元素(注意队列是循环的,所以最后一项会显示在开头)
for (int i = queue->front; i != queue->rear; i = (i + 1) % queue->capacity) {
printf("%d ", queue->array[i]);
}
if (queue->front != queue->rear) {
printf("%d\n", queue->array[queue->front]); // 如果不是空队列,打印最后一位
}
return 0;
}
阅读全文