C语言实现标准FIFO
时间: 2023-07-24 19:28:59 浏览: 63
要实现一个标准的FIFO(先进先出)数据结构,可以使用一个数组和两个指针来实现。下面是一个简单的C语言实现示例:
```c
#include <stdio.h>
#define MAX_SIZE 100
// 定义一个FIFO结构体
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
} FIFO;
// 初始化FIFO
void initFIFO(FIFO* fifo) {
fifo->front = 0;
fifo->rear = 0;
}
// 检查FIFO是否为空
int isEmpty(FIFO* fifo) {
return (fifo->front == fifo->rear);
}
// 检查FIFO是否已满
int isFull(FIFO* fifo) {
return (fifo->rear == MAX_SIZE);
}
// 入队操作
void enqueue(FIFO* fifo, int value) {
if (isFull(fifo)) {
printf("FIFO is full.\n");
return;
}
fifo->data[fifo->rear] = value;
fifo->rear++;
}
// 出队操作
int dequeue(FIFO* fifo) {
if (isEmpty(fifo)) {
printf("FIFO is empty.\n");
return -1; // 返回一个特殊值表示出错
}
int value = fifo->data[fifo->front];
fifo->front++;
return value;
}
int main() {
FIFO fifo;
initFIFO(&fifo);
enqueue(&fifo, 10);
enqueue(&fifo, 20);
enqueue(&fifo, 30);
while (!isEmpty(&fifo)) {
int value = dequeue(&fifo);
printf("%d ", value);
}
return 0;
}
```
上述代码通过定义一个FIFO结构体,使用数组存储数据,front指针指向队列的第一个元素,rear指针指向队列的下一个空位置。enqueue函数用于入队,dequeue函数用于出队,isEmpty和isFull函数用于判断FIFO是否为空或已满。在主函数中,我们测试了一些入队和出队操作的例子。