SSTF算法或SCAN算法.docx

上传人:小飞机 文档编号:3166307 上传时间:2023-03-11 格式:DOCX 页数:7 大小:37.58KB
返回 下载 相关 举报
SSTF算法或SCAN算法.docx_第1页
第1页 / 共7页
SSTF算法或SCAN算法.docx_第2页
第2页 / 共7页
SSTF算法或SCAN算法.docx_第3页
第3页 / 共7页
SSTF算法或SCAN算法.docx_第4页
第4页 / 共7页
SSTF算法或SCAN算法.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《SSTF算法或SCAN算法.docx》由会员分享,可在线阅读,更多相关《SSTF算法或SCAN算法.docx(7页珍藏版)》请在三一办公上搜索。

1、SSTF算法或SCAN算法SSTF算法或SCAN算法.txt心是自己的,干嘛总被别人伤.没有伞的孩子必须努力奔跑敷衍旳青春 总昰想太多 怨,只怨现实太现实为什么在一起要两个人的同意丶而分手只需要一个人 #include #include #define MAXSIZE 100 #include #include typedef struct node int num;/磁盘号 int flag;/用于标记是否已经服务过 Disk; /Disk seqMAXSIZE 55,0,58,0,39,0,18,0,90,0,160,0,150,0,38,0,184,0; Disk seqMAXSIZE;

2、 int size = 9,currentNum = 100; int sum1 = 0; int sum2 = 0; void Init(int size,Disk seqMAXSIZE)/磁道号的个数 int i; srand(time(NULL); for(i = 0; isize; i+) seqi.num = rand%199;/产生0到199之间的数字 / scanf(%d,&seqi.num); /seqi.num = i*4 ; seqi.flag = 0; void FCFS(int size,Disk seqMAXSIZE)/此参数为请求的入口 int i; for(i =

3、 0; isize; i+) printf(访问的序列号%dn,seqi.num); int FindShortest(int size,int currentNum,Disk seqMAXSIZE) int i,pos1,pos2,min,flag = 0; for(i = 0; isize; i+) = if(seqi.flag = 0 & seqi.num != currentNum) min = abs(seqi.num - currentNum); pos1 = i; break; for(i = 0; i abs(seqi.num - currentNum) flag = 1; m

4、in = abs(seqi.num - currentNum); pos2 = i; sum1 += min; if(flag) seqpos2.flag = 1; return pos2; else seqpos1.flag = 1; return pos1; int SSTF(int size,int start,Disk seqMAXSIZE)/start为开始序列号 int i,pos;/pos为最短那个序列号的位置 /pos = FindShortest(size); printf(访问的序列号:n); for(i = 0; isize; i+) pos = FindShortest

5、(size,currentNum,seq); /printf(%d: ,currentNum); /sum += currentNum; currentNum = seqpos.num; printf(%d ,seqpos.num); return 1; int flagDirection(int size,int currentNum,Disk seqMAXSIZE)/此函数用于判断磁头的移动方向 int pos,i,flag = 0; for(i = 0; i currentNum & seqi.flag = 0) flag = 1; pos = i; break; return flag

6、; int FindShortest2(int size,int currentNum,int status,Disk seqMAXSIZE)/status 1(由内像外)0 int i,pos1,pos2,min,flag = 0; for(i = 0; i currentNum) min = abs(seqi.num - currentNum); pos1 = i; break; else if(seqi.flag = 0 & seqi.num != currentNum & seqi.num currentNum) min = abs(seqi.num - currentNum); po

7、s1 = i; break; for(i = 0; i abs(seqi.num - currentNum) & seqi.num currentNum) flag = 1; min = abs(seqi.num - currentNum); pos2 = i; else if(!seqi.flag & min abs(seqi.num - currentNum) & seqi.num currentNum) flag = 1; min = abs(seqi.num - currentNum); pos2 = i; /printf(%d ,min); sum2 += min; /printf(

8、n); /printf(%d ,sum2); if(flag) seqpos2.flag = 1; return pos2; else seqpos1.flag = 1; return pos1; void SCAN(int size,int currentNum,Disk seqMAXSIZE) int status,pos; int i; for(i = 0; isize; i+) status = flagDirection(size,currentNum,seq); pos = FindShortest2(size,currentNum,status,seq); currentNum

9、= seqpos.num; printf(%d ,currentNum); int main Disk seqMAXSIZE; int i; Init(size,seq); for(i = 0; isize; i+) printf(%d ,seqi.num); printf(n); /FCFS(10); SSTF(size,currentNum,seq); printf(平均寻道长度%.1fn,(float)(sum1/9.0); printf(n); /printf(%dn,sum1); for(i = 0; isize;i+) seqi.flag = 0; SCAN(size,currentNum,seq); /printf(%d n,sum2); printf(平均寻道长度%.1fn,(float)(sum2/9.0); return 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号