• 大小: 3KB
    文件类型: .cpp
    金币: 2
    下载: 1 次
    发布日期: 2021-06-14
  • 语言: C/C++
  • 标签: LOOK  

资源简介

采用C++对操作系统课程中的LOOK电梯调度算法进行简单的描述,望采纳

资源截图

代码片段和文件信息

/*
操作系统实验3-电梯调度算法
算法思想:每次总是选择沿移动臂的移动方向最近的那个柱面;如果同一柱面有多个请求,还需进行旋转优化。
如果当前移动方向没有但是相反方向有访问请求时,就改变移动臂的移动方向,然后处理最近的I/O请求。
实现方案:首先设置一个List1存放输入的一组访问序列,对List1进行从小到大排序,用户输入当前停留的柱面,
把当前的柱面存入顺序队列Queue1当中,在List当中找到当前柱面的位置,将其和上一个、下一个元素分别做差
比较大小,选择移动方向,之后就是从当前位置开始读取List中的数存到Queue当中,最后输出一组电梯调度算法的序列。
实验时间:2018.6.8
实验人:高耀
*/

#include
#include
#include
#include
#include
using namespace std;

int main() {
queue Queue1;
list List1;
int SUM = 0;
int a b c;
cout << “请输入柱面访问请求个数(包括当前访问的柱面):“ << endl;
cin >> c;
cout << “请输入柱面访问请求序列(包括当前访问的柱面):“ << endl;
for (int i = 0; i < c; i++) {
cin >> a;
List1.push_front(a);
}
List1.sort();

cout << “请输入当前柱面的位置(从之前输入的序列中选取一个):“ << endl;
cin >> b;
if (b == List1.front()) { 
cout << “电梯调度算法后的访问序列为:“;
for (list::iterator it = List1.begin(); it != List1.end();it++) {
cout << *it << setw(4); 
}   
cout << endl;
system(“pause“);
exit(0);

else if (b==List1.back()) { //b 为LIST的最大元素
         stackstack;
cout << “电梯调度算法后的访问序列为:“;
for (list::iterator iter = List1.begin(); iter != List1.end(); iter++) {
stack.push(*iter);

while (!stack.emp

评论

共有 条评论