c语言写先来先服务算法
时间: 2023-07-26 20:31:40 浏览: 207
先来先服务(FCFS)算法是一种常用的调度算法,可以用来实现按照请求的先后顺序进行任务调度。下面是使用C语言实现先来先服务算法的示例代码:
```c
#include <stdio.h>
struct Task {
int id; // 任务编号
int arrive_time; // 到达时间
int execute_time; // 执行时间
};
int main() {
int n = 5; // 任务数
struct Task tasks[] = {{1, 0, 3}, {2, 1, 2}, {3, 2, 1}, {4, 3, 4}, {5, 4, 5}}; // 任务列表
int curr_time = 0; // 当前时间
int curr_task = 0; // 当前正在执行的任务编号
// 模拟先来先服务算法的执行过程
for (int i = 0; i < 100; i++) { // 运行100个时间单位
printf("时间 %d:", i);
if (curr_task < n) { // 如果还有未执行的任务
if (tasks[curr_task].arrive_time <= curr_time) { // 如果当前时间已经到达任务的到达时间
printf("执行任务 %d,剩余时间 %d\n", tasks[curr_task].id, tasks[curr_task].execute_time);
tasks[curr_task].execute_time--; // 执行一个时间单位
if (tasks[curr_task].execute_time == 0) { // 如果任务已经执行完毕
curr_task++; // 切换到下一个任务
}
} else { // 如果当前时间还没有到达任务的到达时间
printf("暂无任务\n");
}
} else { // 如果所有任务都已经执行完毕
printf("所有任务已经执行完毕\n");
}
curr_time++; // 时间自增1
}
return 0;
}
```
以上代码中,我们使用了一个循环来模拟先来先服务算法的执行过程,每个时间单位都会检查当前时间和任务的到达时间,根据需要进行任务调度和执行。