在c语言中,我该如何使用queue
时间: 2024-10-13 11:09:18 浏览: 31
在 C 语言中,队列(Queue)是一种先进先出(FIFO,First In First Out)的数据结构,可以使用数组或链表来实现。如果你想要使用数组实现,你可以创建一个动态大小的队列,这里提供了一个简单的基于数组的队列实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int front; // 队首元素的索引
int rear; // 队尾元素的索引
} Queue;
// 初始化队列
void init_queue(Queue *q) {
q->front = -1;
q->rear = -1;
}
// 判断队列是否为空
int is_empty(const Queue *q) {
return (q->front == -1);
}
// 判断队列是否已满
int is_full(const Queue *q) {
return ((q->rear + 1) % MAX_SIZE == q->front);
}
// 入队操作
void enqueue(Queue *q, int value) {
if (is_full(q)) {
printf("Queue is full.\n");
return;
}
if (is_empty(q)) {
q->front = q->rear = 0;
} else {
q->rear = (q->rear + 1) % MAX_SIZE;
}
q->data[q->rear] = value;
printf("Enqueued %d.\n", value);
}
// 出队操作
int dequeue(Queue *q) {
if (is_empty(q)) {
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 = q->rear = -1;
}
printf("Dequeued %d.\n", value);
return value;
}
// 测试队列
int main() {
Queue queue;
init_queue(&queue);
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
dequeue(&queue);
dequeue(&queue);
return 0;
}
```
在这个例子中,`enqueue()` 和 `dequeue()` 分别用于入队和出队操作。注意,这个实现并没有处理内存管理,实际项目中可能需要考虑动态分配数组。
阅读全文