// 找出当前时间的已到达的 执行时间最短的作业 int findminjob(job jobs[], int count,int current_time) { int i; //设置就绪队列 for (i = 0; i < quantity; i++) { if (current_time >= jobs[i].reach_time) jobs[i].isreached = 1; } printf("%d", jobs[3].isreached); int minjob = -1;//=jobs[0].need_time; int minloc = -1; for (int i = 0; i < count; i++) { if (minloc == -1) { if (jobs[i].isreached == 1 && jobs[i].visited == 0) { minjob = jobs[i].need_time; minloc = i; } } if (minjob > jobs[i].need_time && jobs[i].visited == 0 && jobs[i].isreached == 1) { minjob = jobs[i].need_time; minloc = i; } } if (minloc = -1) minloc = findearlyjob(jobs, quantity); printf("%d", minloc); return minloc; }
时间: 2023-06-24 18:07:27 浏览: 90
最短作业时间优先算法操作系统实验
4星 · 用户满意度95%
这段代码的功能是在给定作业列表中,找出当前时间已到达的并且执行时间最短的作业。具体实现流程如下:
1. 遍历作业列表,将当前时间已经到达的作业标记为已到达(isreached=1)。
2. 初始化最短作业和最短作业位置为-1。
3. 遍历作业列表,如果作业已到达(isreached=1)并且未被访问(visited=0),则将该作业的执行时间(need_time)赋值给最短作业(minjob),并将该作业位置赋值给最短作业位置(minloc)。
4. 如果当前遍历到的作业的执行时间(need_time)比最短作业(minjob)还要小,并且该作业已到达(isreached=1)且未被访问(visited=0),则将该作业的执行时间赋值给最短作业(minjob),并将该作业位置赋值给最短作业位置(minloc)。
5. 如果最短作业位置(minloc)仍然是初始值-1,则说明当前时间还没有到达任何作业的到达时间,因此调用findearlyjob函数找到最早到达的作业位置赋值给minloc。
6. 返回最短作业位置(minloc)。
需要注意的是,第15行的代码应该更正为`if (minloc == -1)`,而不是`if (minloc = -1)`。前者是判断是否相等,后者是赋值操作,容易引起逻辑错误。
阅读全文