测试时发现未知错误,请大家帮帮忙,看下我程序哪里错了
这是我的操作系统实验作业,要求模拟磁盘的移臂调度,使用的是电梯调度算法。但我在输入测试数据后未得到理想结果,请大家帮帮忙。这是代码:
程序代码:
#include <stdio.h> #include <stdlib.h> #define Maxsize 100 typedef struct //磁头信息 { int cur; //当前磁头所处柱面号,初始值为53 int direction; //磁头移动方向 1代表由外往内,-1代表由内往外 }citou; typedef struct //用来储存柱面信息 { int a[Maxsize]; int len; }list; list c1; //储存大于磁头初始柱面的请求访问柱面,顺序由小到大 list c2; //储存小于磁头初始柱面的请求访问柱面,顺序由大到小 void creat() { int x; int i,j=0; printf("\n请输入访问柱面序列(以-1结束):\n"); scanf("%d",&x); while(x!=-1) { if(x>=53) { c1.a[i++]=x; c1.len=i; } else { c2.a[j++]=x; c2.len=j; } scanf("%d",&x); } int temp; //将c1中的柱面序列由小到大排序 for(i=0;i<c1.len-1;i++) for(j=0;j<c1.len-1-i;j++) if(c1.a[j]>c1.a[j+1]) { temp=c1.a[j]; c1.a[j]=c1.a[j+1]; c1.a[j+1]=temp; } //将c2中的柱面序列由大到小排序 for(i=0;i<c2.len-1;i++) for(j=0;j<c2.len-1-i;j++) if(c2.a[j]<c2.a[j+1]) { temp=c2.a[j]; c2.a[j]=c2.a[j+1]; c2.a[j+1]=temp; } } void print(list *a) { int i; printf("\n页面序列:"); for(i=0;i<a->len-1;i++) printf("%d ",a->a[i]); } int main() { creat(); print(&c1); print(&c2); } //测试数据: 98 183 37 122 14 124 65 67 -1
运行结果: