C语言 fifo 数组实现
时间: 2024-11-23 13:24:14 浏览: 19
在C语言中,FIFO(First-In-First-Out,先进先出)队列可以通过数组实现,通常采用循环数组的方式。以下是基本步骤:
1. 定义数组结构:首先创建一个固定大小的数组用于存储队列元素,每个元素都有一个索引。
```c
typedef struct {
int capacity; // 队列容量
int front; // 队头指针,指向下一个将入队的位置
int rear; // 队尾指针,指向当前已满的位置
} Queue;
```
2. 初始化:设置初始的front和rear值,通常是0和capacity - 1。
```c
Queue queue = {10, 0, 9}; // 创建一个容量为10的队列
```
3. 入队操作(enqueue):当数组未满时,更新rear并把新元素放在rear位置。
```c
void enqueue(Queue *queue, int item) {
if (queue->rear == (queue->front + queue->capacity - 1) % queue->capacity) {
printf("Queue is full.\n");
} else {
queue->rear = (queue->rear + 1) % queue->capacity;
queue->data[queue->rear] = item;
}
}
```
4. 出队操作(dequeue):如果队列非空,更新front并返回队首元素。
```c
int dequeue(Queue *queue) {
if (queue->front == queue->rear) {
printf("Queue is empty.\n");
return -1; // 返回错误代码或其他标志
} else {
int item = queue->data[queue->front];
queue->front = (queue->front + 1) % queue->capacity;
return item;
}
}
```
5. 查看队列是否为空或满:检查front和rear的关系即可判断。
注意,这种方法依赖于数组索引来实现,当元素数量超过数组长度的一半时,可能会频繁发生边界检查,效率较低。实际应用中,更常见的是使用动态数据结构如链表来实现FIFO。
阅读全文