c语言实现先来先服务算法
时间: 2023-12-14 22:01:16 浏览: 185
C实现“先来先服务算法”
先来先服务(First Come First Serve, FCFS)是一种简单的调度算法,也是操作系统中最基本的一种调度算法。它的原则是按照作业到达的先后顺序进行调度,先到达的作业先执行,后到达的作业后执行。
在C语言中实现FCFS算法可以通过以下步骤:
1. 定义作业的结构体,包括作业名、到达时间、服务时间和完成时间等信息。
2. 输入作业的信息,可以通过键盘输入或者文件读取的方式。
3. 根据作业的到达时间进行排序,将作业按照到达时间的先后顺序排列。
4. 计算每个作业的完成时间,根据FCFS算法,完成时间等于前一个作业的完成时间加上当前作业的服务时间。
5. 输出每个作业的完成时间。
以下是一个简单的C语言伪代码实现FCFS算法的例子:
```c
#include <stdio.h>
typedef struct {
char name[20];
int arrive_time;
int service_time;
int finish_time;
} Job;
int main() {
int n;
printf("请输入作业的数量:");
scanf("%d", &n);
Job jobs[n];
// 输入每个作业的信息
for (int i = 0; i < n; i++) {
printf("请输入作业名称、到达时间和服务时间:");
scanf("%s %d %d", jobs[i].name, &jobs[i].arrive_time, &jobs[i].service_time);
}
// 按照到达时间排序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (jobs[j].arrive_time > jobs[j+1].arrive_time) {
Job temp = jobs[j];
jobs[j] = jobs[j+1];
jobs[j+1] = temp;
}
}
}
// 计算每个作业的完成时间
int current_time = 0;
for (int i = 0; i < n; i++) {
jobs[i].finish_time = current_time + jobs[i].service_time;
current_time = jobs[i].finish_time;
}
// 输出每个作业的完成时间
for (int i = 0; i < n; i++) {
printf("%s 的完成时间为:%d\n", jobs[i].name, jobs[i].finish_time);
}
return 0;
}
```
通过以上伪代码,我们可以实现一个简单的FCFS调度算法,来对输入的作业信息进行调度并输出每个作业的完成时间。
阅读全文