fifo算法c语言代码
时间: 2023-07-26 21:15:30 浏览: 42
以下是一个简单的 FIFO 算法的 C 语言实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
// 全局变量
int queue[MAX_SIZE];
int front = -1, rear = -1;
// 函数声明
void enqueue(int data);
int dequeue();
void display();
int main() {
int choice, data;
while (1) {
printf("\nFIFO算法\n");
printf("1. 入队\n");
printf("2. 出队\n");
printf("3. 显示\n");
printf("4. 退出\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入要入队的数据:");
scanf("%d", &data);
enqueue(data);
break;
case 2:
data = dequeue();
if (data != -1) {
printf("出队的数据是 %d\n", data);
}
break;
case 3:
display();
break;
case 4:
exit(0);
default:
printf("无效的选择!\n");
}
}
return 0;
}
// 入队函数
void enqueue(int data) {
if (rear == MAX_SIZE - 1) {
printf("队列已满!\n");
return;
}
if (front == -1 && rear == -1) {
front = rear = 0;
} else {
rear++;
}
queue[rear] = data;
printf("%d 已经入队!\n", data);
}
// 出队函数
int dequeue() {
int data;
if (front == -1 && rear == -1) {
printf("队列为空!\n");
return -1;
}
data = queue[front];
if (front == rear) {
front = rear = -1;
} else {
front++;
}
return data;
}
// 显示函数
void display() {
int i;
if (front == -1 && rear == -1) {
printf("队列为空!\n");
return;
}
printf("队列元素:");
for (i = front; i <= rear; i++) {
printf("%d ", queue[i]);
}
printf("\n");
}
```
在上面的代码中,我们首先定义了一个长度为 `MAX_SIZE` 的队列数组 `queue`,以及两个变量 `front` 和 `rear`,它们分别指向队列的前端和后端。
然后,我们定义了三个函数:`enqueue()`、`dequeue()` 和 `display()`,分别用于入队、出队和显示队列中的元素。
在 `enqueue()` 函数中,我们首先检查队列是否已满,如果已满,就输出一条错误信息并返回。如果队列不满,则将新元素插入队列的尾部,并将 `rear` 指针向后移动一位。
在 `dequeue()` 函数中,我们首先检查队列是否为空,如果为空,就输出一条错误信息并返回 -1。如果队列不为空,则返回队列前端的元素,并将 `front` 指针向后移动一位。
在 `display()` 函数中,我们首先检查队列是否为空,如果为空,就输出一条错误信息并返回。如果队列不为空,则遍历队列中的所有元素,并依次输出它们的值。
最后,我们使用一个简单的菜单来演示这些函数的使用。用户可以选择要执行的操作,然后输入相应的参数。当用户选择退出时,程序结束。