用c语言 设计 一个fifo
时间: 2023-11-27 19:54:57 浏览: 66
以下是一个简单的FIFO队列的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef struct fifo {
int data[MAX_SIZE];
int head;
int tail;
} FIFO;
void initFIFO(FIFO *fifo) {
fifo->head = 0;
fifo->tail = 0;
}
int isFIFOFull(FIFO *fifo) {
return (fifo->tail + 1) % MAX_SIZE == fifo->head;
}
int isFIFOEmpty(FIFO *fifo) {
return fifo->head == fifo->tail;
}
int enFIFO(FIFO *fifo, int value) {
if (isFIFOFull(fifo)) {
return -1;
} else {
fifo->data[fifo->tail] = value;
fifo->tail = (fifo->tail + 1) % MAX_SIZE;
return 0;
}
}
int deFIFO(FIFO *fifo, int *value) {
if (isFIFOEmpty(fifo)) {
return -1;
} else {
*value = fifo->data[fifo->head];
fifo->head = (fifo->head + 1) % MAX_SIZE;
return 0;
}
}
int main() {
FIFO fifo;
int value;
initFIFO(&fifo);
enFIFO(&fifo, 1);
enFIFO(&fifo, 2);
enFIFO(&fifo, 3);
while (!isFIFOEmpty(&fifo)) {
deFIFO(&fifo, &value);
printf("%d ", value);
}
return 0;
}
```
这个实现中,我们使用了一个结构体来表示FIFO队列,其中包含一个数组来存储数据,一个头指针和一个尾指针来表示队列的状态。我们还实现了初始化队列,判断队列是否满和空,入队和出队等基本操作。最后,在主函数中演示了如何使用这个FIFO队列。
阅读全文