fifo算法c语言代码
时间: 2023-07-26 08:18:07 浏览: 74
c 语言中fifo算法
5星 · 资源好评率100%
下面是一个简单的 FIFO 算法的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
int fifo[MAX_SIZE];
int front = -1;
int rear = -1;
void enqueue(int item) {
if ((front == 0 && rear == MAX_SIZE - 1) || rear == front - 1) {
printf("Queue is full!");
return;
}
if (front == -1) {
front = 0;
rear = 0;
} else if (rear == MAX_SIZE - 1) {
rear = 0;
} else {
rear++;
}
fifo[rear] = item;
}
int dequeue() {
if (front == -1) {
printf("Queue is empty!");
return -1;
}
int item = fifo[front];
if (front == rear) {
front = -1;
rear = -1;
} else if (front == MAX_SIZE - 1) {
front = 0;
} else {
front++;
}
return item;
}
void display() {
if (front == -1) {
printf("Queue is empty!");
return;
}
printf("Queue: ");
if (rear >= front) {
for (int i = front; i <= rear; i++) {
printf("%d ", fifo[i]);
}
} else {
for (int i = front; i < MAX_SIZE; i++) {
printf("%d ", fifo[i]);
}
for (int i = 0; i <= rear; i++) {
printf("%d ", fifo[i]);
}
}
printf("\n");
}
int main() {
enqueue(10);
enqueue(20);
enqueue(30);
enqueue(40);
display();
printf("Dequeued item: %d\n", dequeue());
printf("Dequeued item: %d\n", dequeue());
display();
enqueue(50);
enqueue(60);
enqueue(70);
display();
printf("Dequeued item: %d\n", dequeue());
printf("Dequeued item: %d\n", dequeue());
printf("Dequeued item: %d\n", dequeue());
printf("Dequeued item: %d\n", dequeue());
display();
enqueue(80);
enqueue(90);
enqueue(100);
enqueue(110);
display();
return 0;
}
```
该代码实现了一个长度为 10 的 FIFO 队列,使用 `enqueue()` 函数向队列中添加元素,使用 `dequeue()` 函数从队列中删除元素,使用 `display()` 函数显示队列中的元素。其中,`front` 和 `rear` 分别表示队列的头部和尾部,当 `front` 和 `rear` 相等时,表示队列为空;当 `rear` 指向队列的最后一个元素,而 `front` 指向队列的第一个元素时,表示队列已满。
阅读全文