資源簡介
采用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?<“請輸入柱面訪問請求個數(包括當前訪問的柱面):“?< cin?>>?c;
cout?<“請輸入柱面訪問請求序列(包括當前訪問的柱面):“?< for?(int?i?=?0;?i? cin?>>?a;
List1.push_front(a);
}
List1.sort();
cout?<“請輸入當前柱面的位置(從之前輸入的序列中選取一個):“?< cin?>>?b;
if?(b?==?List1.front())?{?
cout?<“電梯調度算法后的訪問序列為:“;
for?(list::iterator?it?=?List1.begin();?it?!=?List1.end();it++)?{
cout?<*it?< }???
cout?< 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
- 上一篇:c語言程序設計_銷售管理系統
- 下一篇:簡單編譯器
評論
共有 條評論