C语言实现FIFO算法
时间: 2023-10-01 16:06:49 浏览: 285
下面是C语言实现FIFO算法的示例代码:
```c
#include <stdio.h>
// 定义FIFO缓存大小
#define CACHE_SIZE 5
// 定义FIFO缓存结构体
typedef struct {
int data[CACHE_SIZE]; // 数据缓存数组
int head; // 头指针,指向队列头部
int tail; // 尾指针,指向队列尾部
} fifo_cache;
// 初始化FIFO缓存
void init_cache(fifo_cache *cache) {
cache->head = 0;
cache->tail = 0;
for (int i = 0; i < CACHE_SIZE; i++) {
cache->data[i] = 0;
}
}
// 向FIFO缓存中添加数据
void add_data(fifo_cache *cache, int value) {
// 如果缓存已经满了,需要删除队列头部数据
if ((cache->tail + 1) % CACHE_SIZE == cache->head) {
cache->head = (cache->head + 1) % CACHE_SIZE;
}
cache->data[cache->tail] = value;
cache->tail = (cache->tail + 1) % CACHE_SIZE;
}
// 从FIFO缓存中取出数据
int get_data(fifo_cache *cache) {
if (cache->head == cache->tail) {
printf("缓存已经为空\n");
return -1;
}
int value = cache->data[cache->head];
cache->head = (cache->head + 1) % CACHE_SIZE;
return value;
}
int main() {
fifo_cache cache;
init_cache(&cache);
add_data(&cache, 1);
add_data(&cache, 2);
add_data(&cache, 3);
add_data(&cache, 4);
add_data(&cache, 5);
add_data(&cache, 6);
printf("取出的数据:%d\n", get_data(&cache));
printf("取出的数据:%d\n", get_data(&cache));
printf("取出的数据:%d\n", get_data(&cache));
printf("取出的数据:%d\n", get_data(&cache));
printf("取出的数据:%d\n", get_data(&cache));
printf("取出的数据:%d\n", get_data(&cache));
return 0;
}
```
在上面的示例代码中,我们定义了一个FIFO缓存的结构体,包含数据缓存数组、头指针和尾指针。然后我们定义了三个函数,分别用于初始化FIFO缓存、向缓存中添加数据、从缓存中取出数据。其中添加数据时,如果缓存已经满了,需要删除队列头部数据;取出数据时,如果缓存已经为空,需要输出提示信息并返回-1。最后在main函数中,我们演示了如何使用FIFO缓存,添加6个数据,然后依次取出所有数据。
阅读全文