printf(\等待下一个进程\while(time2>0) { } puts(\
printf(\进程:%-5s正在运行,到达时间:%-5d,运行时间:%-5d,
printf(\Sleep(1000); time2--;
优先级:%d\\n\
优化
while(p->run_time) { }
printf(\执行结束!\\n\
puts(\
printf(\进程:%-5s正在运行,到达时间:%-5d,运行时
printf(\正在执行 %d \\r\p->run_time--; Sleep(1000);
} else
if(time == h->come_time)//p结束而且h刚好到达 {
// Sleep(p->run_time*1000);
2010_06修改 :
间:%-5d,优先级:%d\\n\
} else
if(time > h->come_time)//p结束前h已到达
{
puts(\
time2=p->run_time-(time-h->come_time); //p从
到来至h进程等待钱执行时间
while(time2) { }
printf(\进程:%-5s等待\\n\time2=time-h->come_time;
while(time2) //p从h
printf(\正在执行 %d \\r\Sleep(1000);
等待到完成市时间
{ }
printf(\进程:%-5s正在运行,到达时间:%-5d,运行时
printf(\正在执行 %d \\r\Sleep(1000);
间:%-5d,优先级:%d\\n\
}
/************************************************************************/
/* *用户菜单*
}
}
counter++; p=h; h=h->next;
}
*/
/************************************************************************/
void Menue(PCB *head,int n) {
int choice;
//定义时间片
int timeturn; int LOOP=1;
while(LOOP) ┐\\n\
\\n\
\\n\
\\n\
printf(\printf(\
│ 4.退出 │\\n\ └──────────────────┘\\n\
printf(\
│ 3.先来先服务算法 │
printf(\
│ 2.时间片轮转算法 │
printf(\
│ 1.优先级服务算法 │
{
printf(\┌──────────────────
printf(\请输入您的选择:\\n\
scanf(\switch(choice) { case 1:
VIP_Firstserve(head);break;
case 2:
printf(\输入时间片:\\n\scanf(\
TimeTurn_Firstserve(head,timeturn,n);break;
case 3:
Firstcome_Firstserve(head);break;
case 4:
exit(0);
default: LOOP=0; break;
}
}
}
/*****************************主函数部分***************************************/
void main() {
PCB *head; int n;
printf(\
| _______________ | \\n\\ | I I | \\n\\ | I 姜博玮 I | \\n\\ | I 1115107019 I | \\n\\ | I 11电子2 I | \\n\\ | I_____________I | \\n\\ !_________________! \\n\\ \
//n为创建的进程数目
}
printf(\请输入进程个数:\\n\scanf(\head=creat(n);
Print(head,n);
Menue(head,n);
//请用户选择算法类型
//将创建后的进程链表打印,以便用户查看
//创建进程就绪队列链表
六、 运行结果及结论 运行结果:
输入3个进程,a、b、c,命名、开始、到达时间、优先级等信息如图所示;