{
printf(\ init(); timesch(); } else {
printf(\ goto tyut; } }
getch(); }
void init() {
int i; head=0; if(algo==2) {
for(i=1;i prochain[i].id=i; prochain[i].priority=(rand()+11)A; prochain[i].cputime=0; prochain[i].alltime=(rand()+1)%7; prochain[i].state='W'; prochain[i].next=0; if((prochain[i].priority prochain[i].next=head; head=prochain[i].id; } } } else { for(i=1;i prochain[i].id=i; prochain[i].priority=(rand()+1)%3+1; prochain[i].cputime=0; prochain[i].alltime=(rand()+1)%7; prochain[i].state='W'; prochain[i].next=(i+1)%furthest; } head=1; tail=furthest-1; prochain[furthest-1].next=0; } run=head; prochain[run].state='R'; head=prochain[run].next; prochain[run].next=0; print(); } void insert(int q) { int p,s; p=head; s=prochain[head].next; while((prochain[q].priority p=s; s=prochain[s].next; } prochain[p].next=q; prochain[q].next=s; } void print() { int k,p; for(k=1;k<=40;k++) printf(\ printf(\ \ printf(\ printf(\ %d \ p=head; while(p!=0) { printf(\ p=prochain[p].next; } printf(\ for(k=1;k<=40;k++) printf(\ printf(\ printf(\ \ for(k=1;k printf(\ printf(\ printf(\ for(k=1;k printf(\ printf(\ printf(\ for(k=1;k printf(\ printf(\ printf(\ for(k=1;k printf(\ printf(\ printf(\ \ for(k=1;k printf(\ printf(\ printf(\ \ for(k=1;k printf(\ printf(\} void prisch() { while (run!=0) { if(prochain[run].alltime==0) { prochain[run].state='F'; run=head; head=prochain[run].next; prochain[run].state='R'; } prochain[run].cputime+=1; prochain[run].priority-=3; prochain[run].alltime-=1; if(prochain[run].alltime==0) { prochain[run].state='F'; prochain[run].next=0; if(head!=0) { run=head; prochain[run].state='R'; head=prochain[run].next; } else { prochain[0].id=prochain[run].id; run=0; } } else { if((prochain[run].priority prochain[run].state='W'; insert(run); run=head; prochain[run].state='R'; head=prochain[run].next; } print(); } } } void timesch() { while (run!=0) { if (prochain[run].alltime==0) { prochain[run].state='F'; run=head; head=prochain[run].next; prochain[run].state='R'; } prochain[run].alltime-=1; prochain[run].cputime+=1; if(prochain[run].alltime==0) { prochain[run].state='F'; prochain[run].next=0; if(head!=0) { run=head; prochain[run].state='R'; head=prochain[head].next; } else { prochain[0].id=prochain[run].id; run=0; } } else { if ((prochain[run].cputime==prochain[run].priority)&&(head!=0)) { prochain[run].state='W'; prochain[run].cputime=0; insert2(); run=head; prochain[run].state='R'; head=prochain[head].next; } } print(); } } void insert2() { prochain[tail].next=run; tail=run; prochain[run].next=0; } 五、实验结果与分析