MoveDistance[i]=TrackOrder[VisitOrder[i-1]]-TrackOrder[k];
++i; } } else{
for(;h>-1;--h){ VisitOrder[i]=h;
MoveDistance[i]=TrackOrder[VisitOrder[i-1]]-TrackOrder[h];
++i; } } }
void scan(){ shunxu(); int k,i; k=1;
int temp;
if(direction){//若向磁道号增加方向访问 for(i=0;i if(TrackOrder[i]>100){//找到第一个大于开始磁道号的元素 temp=i; VisitOrder[0]=i; MoveDistance[0]=TrackOrder[i]-100; break; } } ++i; while(i MoveDistance[k]=TrackOrder[VisitOrder[k-1]]-TrackOrder[i]; ++i; ++k; } i=temp-1;//遍历完后,回到刚刚第一个大于开始磁道号的元素的前一个向前遍历 while(i>-1){ VisitOrder[k]=i; MoveDistance[k]=TrackOrder[VisitOrder[k-1]]-TrackOrder[i]; --i; ++k; } } else{//若向磁道号减小方向访问 for(i=0;i if(TrackOrder[i+1]>100){//找到最后一个小于磁道号的元素 temp=i; VisitOrder[0]=i; MoveDistance[0]=TrackOrder[i]-100; break; } } --i;//向前遍历 while(i>-1){ VisitOrder[k]=i; MoveDistance[k]=TrackOrder[VisitOrder[k-1]]-TrackOrder[i]; --i; ++k; } i=temp+1;//遍历完后,回到刚刚最后一个小于开始磁道号的元素的后一个向后遍历 while(i MoveDistance[k]=TrackOrder[VisitOrder[k-1]]-TrackOrder[i]; ++i; ++k; } } } void cscan(){ shunxu(); int k,i; k=1; int temp; if(direction){//若向磁道号增加方向访问 for(i=0;i if(TrackOrder[i]>100){//找到第一个大于开始磁道号的元素 temp=i; VisitOrder[0]=i; MoveDistance[0]=TrackOrder[i]-100; break; } } ++i; while(i MoveDistance[k]=TrackOrder[VisitOrder[k-1]]-TrackOrder[i]; ++i; ++k;