C语言实现最短剩余时间优先(SRTF)进程调度算法:代码详解与执行顺序输出
```c #include <stdio.h> #include <string.h> typedef struct { char name[11]; int arrival_time; int burst_time; int remaining_time; } Process; void srtf(Process processes[], int n) { int current_time = 0; int completed = 0; int shortest; int finish_time; int check = 0; int minm = 999999; int i; while (completed != n) { for (i = 0; i < n; i++) { if ((processes[i].arrival_time <= current_time) && (processes[i].remaining_time < minm) && processes[i].remaining_time > 0) { minm = processes[i].remaining_time; shortest = i; check = 1; } } if (check == 0) { current_time++; continue; } processes[shortest].remaining_time--; minm = processes[shortest].remaining_time; if (minm == 0) { minm = 999999; } if (processes[shortest].remaining_time == 0) { completed++; check = 0; finish_time = current_time + 1; printf("%s ", processes[shortest].name); } current_time++; } } int main() { Process processes[4]; int i; for (i = 0; i < 4; i++) { scanf("%s %d %d", processes[i].name, &processes[i].arrival_time, &processes[i].burst_time); processes[i].remaining_time = processes[i].burst_time; } srtf(processes, 4); return 0; } ``` 这段代码定义了一个进程结构体,包含进程名、到达时间、运行时间和剩余时间。主函数中读取四个进程的信息,然后调用`srtf`函数来模拟最短剩余时间优先调度算法。在`srtf`函数中,我们通过不断检查当前时间点上哪个进程的剩余时间最短来决定下一个执行的进程,直到所有进程都完成。每次选择进程后,都会打印出该进程的名称。 ######[AI写代码神器 | 622点数解答 | 2024-11-14 15:54:43]
- 50 分判断题大揭秘:变量、条件、循环与数组知识正误辨析(字节豆包 | 229点数解答 | 2025-12-21 19:15:16)84
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)384
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)257
- 重新定义字母大小关系:让 “L 队” 字典序小于 “某 E” 的代码实现与分析(字节豆包 | 595点数解答 | 2025-12-03 19:44:59)85
- 深入解析格雷码生成算法:递归求解与代码实现(DeepSeek | 443点数解答 | 2026-01-05 12:21:49)75
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)354
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)501
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)389
- C++实现读取数字并输出最小值的代码及解释(字节豆包 | 113点数解答 | 2026-03-20 19:32:56)30
- 不使用冒泡排序,用归并排序降序合并 bina 与 binb 并输出结果!(GPT | 48点数解答 | 2024-06-01 16:26:38)341
- C++:bindata 类实现文件二进制整数读取、排序与归并合并输出(GPT | 1814点数解答 | 2024-06-01 16:28:14)324
- C++:bindata 类实现文件二进制读取、排序与归并合并输出(GPT | 811点数解答 | 2024-06-01 16:29:51)310