{
if(node->VIP < Head_Link->next->VIP) { } else {
Link = Head_Link->next; flg = q;
node->next = Head_Link->next; Head_Link->next = node;
//while((Link->next != NULL) &&
(node->run_time > Link->next->run_time)) 2010_11_15修改
while((Link->next != NULL) &&
(node->VIP > Link->next->VIP))
}
q = q->next;
}
node->next = Link->next; Link->next = node;
{ }
Link = Link->next;
}//end of while((q->next != NULL) &&
(q->next->come_time < time_over))
//执行队里的头进程
printf(\进程:%-5s正在运行,到达时间:%-5d,运行时
间:%-5d,优先
级:%d\\n\
run_time,Head_Link->next->VIP);
///////////////////////////////////////////////////////////////////////
time1 = Head_Link->next->run_time; while(time1) { }
puts(\执行完毕!\
Link = Head_Link->next;
Head_Link->next = Head_Link->next->next; free(Link); p = flg;
printf(\正在执行 %d \\r\time1--; Sleep(1000);
}//end of else if(q->next->come_time <= q->run_time)
}// end of else if(flag0==1)
}// end of if(q==Head_Link->next)
///////////////////////////////////////
else {
time_over = q->come_time + q->run_time;
if(q->next->come_time >= time_over)//假如q 的下一个进程在他
结束后还未到达。等待(队为空)还是出队首进程(对非空) 。。
{
if(Head_Link->next == NULL) //队为空时 1。先执行等待
进程 2。判断等待进程完成之前有无进程等待
{
time1 = q->next->come_time - time_over;
puts(\while(time1) { }
//执行该进程
printf(\进程:%-5s正在运行,到达时间:%-5d,运行时
printf(\time1--; Sleep(1000);
间:%-5d,优先
级:%d\\n\
time1 = q->next->run_time; while(time1) { }
puts(\执行完毕!\
//将 在p的next进程执行完成之前的进程 入队 time_over = q->run_time + q->come_time;
while((q->next != NULL) && (q->next->come_time <
printf(\正在执行 %d \\r\time1--; Sleep(1000);
time_over))
点
{
assert(node=(PCB*)malloc(sizeof(PCB))); //建节
node->come_time=q->next->come_time; //拷贝节点 strcpy(node->name,q->next->name); //拷贝节点 node->run_time=q->next->run_time; //拷贝节点 node->VIP=q->next->VIP; //拷贝节点
//插入 法按短作业升序 插入节点, if(Head_Link->next == NULL) { } else {
if(node->VIP < Head_Link->next->VIP) { } else {
Link = Head_Link->next;
while((Link->next != NULL) && flg = q;
node->next = Head_Link->next;
Head_Link->next = Head_Link->next->next; flg = q;//标记 node->next = NULL; Head_Link->next = node;
(node->VIP > Link->next->VIP))
{ }
node->next = Link->next;
Link = Link->next;
}
}
Link->next = node;
}//end of while((q->next != NULL) &&
(q->next->come_time < time_over))
//执行队里的头进程 if(Head_Link->next!=NULL) {
printf(\进程:%-5s正在运行,到达时间:%-5d,运行时
间:%-5d,优先
级:%d\\n\run_time,Head_Link->next->VIP);
} else {
q = q->next;
time1 = Head_Link->next->run_time; while(time1) { }
puts(\执行完毕!\
Link = Head->next;
Head_Link->next = Head_Link->next->next; free(Link); q = flg;
printf(\正在执行 %d \\r\time1--; Sleep(1000);