}
}
else if(Head_Link->next != NULL) {
printf(\进程:%-5s正在运行,到达时间:%-5d,运行时
间:%-5d,优先
级:%d\\n\run_time,Head_Link->next->VIP);
time1 = Head_Link->next->run_time; while(time1) { }
puts(\执行完毕!\
Link = Head->next;
Head_Link->next = Head_Link->next->next; free(Link); p = flg;
printf(\正在执行 %d \\r\time1--; Sleep(1000);
}//end of else if(Head_Link->next != NULL)
}//end of if(q->next->come_time > time_over) else {
time_over = q->run_time;
while((q->next != NULL) && (q->next->come_time <
time_over))
{
Link->next->VIP))
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) { flg = q;//标记 node->next = NULL; Head_Link->next = node;
} else { if(node->VIP < Head_Link->next->VIP) { flg = q;
node->next = Head_Link->next;
Head_Link->next = Head_Link->next->next; } else { Link = Head_Link->next;
while((Link->next != NULL) && (node->VIP > {
Link = Link->next;
}
}
}
node->next = Link->next; Link->next = node;
}//end of while((q->next != NULL) && (q->next->come_time
< time_over))
优先
级:%d\\n\run_time,Head_Link->next->VIP);
}
if( Head_Link ->next != NULL)
}
time1 = Head_Link->next->run_time; while(time1) { }
puts(\执行完毕!\
Link = Head->next;
Head_Link->next = Head_Link->next->next; free(Link); p = flg;
printf(\正在执行 %d \\r\time1--; Sleep(1000);
//执行队里的头进程
printf(\进程:%-5s正在运行,到达时间:%-5d,运行时间:%-5d,
}//end of else
{
Link = Head_Link->next; while(Link != NULL) {
printf(\进程:%-5s正在运行,到达时间:%-5d,运行时间:%-5d,优先
级:%d\\n\
}
/************************************************************************/
/* *先来先服务算法* */
/************************************************************************/
void Firstcome_Firstserve(PCB *head) {
PCB *Head=My_Copy(head); int counter=1; PCB *h=Head->next; }
}
time1 = Link->run_time; while(time1) { }
Link = Link->next;
printf(\正在执行 %d \\r\time1--; Sleep(1000);
PCB *p;
int time; //进程结束时间, int time2;
while(h!=NULL) {
if(h==Head->next) {
puts(\
printf(\进程:%-5s正在运行,到达时间:%-5d,运行时间:%-5d,优先
级:%-5d\\n\
} else {
time=p->run_time+p->come_time ;
if(time < h->come_time) //p结束但是h还未到达 h的开始
时间就是到达时间
{
puts(\
// Sleep(p->run_time*1000); 2010_06修改 :优化 while(p->run_time) { }
printf(\执行结束!\\n\
time2=h->come_time-time;
printf(\正在执行 %d \\r\p->run_time--; Sleep(1000);