}//while
shedule(); //进行作业调度 }//main()函数结束
/*************************短作业优先*********************/ //将上述实验中的作业调度算法改为短作业优先调度算法重新完成上述工作:
#include \#include
char name[4]; int length; int printer; int tape; int runtime; int waittime; int next; }JCB; int head; int tape,printer; long memory;
11 页 第
JCB jobtable[n]; int jobcount=0; schedule() {
float xk,k; int p,q,s,t; do {
p=head; q=s=-1; k=10000; while(p!=-1) {
if(jobtable[p].length<=memory&&jobtable[p].tape<=tape&&jobtable[p].printer<=printer) {
xk=jobtable[p].length; if(q==0||xk 12 页 第 t=s; } } s=p; p=jobtable[p].next; } if(q!=-1) { if(t==-1) { head=jobtable[head].next; } else jobtable[t].next=jobtable[q].next; memory=memory-jobtable[q].length; tape=tape-jobtable[q].tape; printer=printer-jobtable[q].printer; printf(\选中作业的作业名:%s\\n\ } }while(q!=-1); } void main() 13 页 第 { char name[4]; int size,tcount,pcount,wtime,rtime; int p; memory=65536; tape=4; printer=4; head=-1; printf(\请输入作业相关的数据(以作业大小为负数停止输入):\\n\ printf(\作业名-作业大小-磁带机数-打印机数-等待时间-估计执行时间\\n\ scanf(\rtime); while(size!=-1) { if(jobcount printf(\无法在创建作业\\n\ break; 14 页 第 } jobcount++; strcpy(jobtable[p].name,name); jobtable[p].length=size; jobtable[p].printer=pcount; jobtable[p].tape=tcount; jobtable[p].runtime=rtime; jobtable[p].waittime=wtime; jobtable[p].next=head; head=p; printf(\作业名-作业大小-磁带机数-打印机数-等待时间-估计执行时间\\n\ scanf(\rtime); } schedule(); } 15 页 第