如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
#include<iostream>#include<string>#include<conio.h>#include<windows.h>#include<iomanip>#include<stdlib.h>usingnamespacestd;classPCB_Control;//进程控制类classPCB//进程控制块结点{public:friendclassPCB_Control;PCB*Next;intNo;intPriority;intNeed_Time;intUsed_Time;charStation;intTime_Priority;PCB(PCB*ptrnext=NULL)//构造头结点{Next=ptrnext;}PCB(intno1,intpri1,intneed_time1,intused_time1,charstation1,inttimepriority,PCB*ptrnext=NULL)//构造普通结点{No=no1;Priority=pri1;Need_Time=need_time1;Used_Time=used_time1;Station=station1;Time_Priority=timepriority;Next=ptrnext;}~PCB(void){}};classPCB_Control{private:PCB*head;intsize;inttime_priority;//时间优先级charini_station;//初始状态intused_time;public:PCB_Control(void)//构造函数{head=newPCB;size=0;time_priority=1000;}voidIni_Insert(intno,intpriority,intneed_time)//对输入的进程进行初始化{used_time=0;ini_station='W';PCB*newnode=newPCB(no,priority,need_time,used_time,ini_station,time_priority,NULL);Insert_And_Sort(newnode);time_priority--;}voidInsert_And_Sort(PCB*ins)//插入函数,插入时并按照优先级和时间进行排序{if(size==0){ins->Next=NULL;head->Next=ins;size++;}else{PCB*front=head;for(intm=0;m<size;m++)//按最高优先级调度算法插入,同等优先级下按先来先服务算法插入{if(ins->Priority!=Index(m)->Priority)//最高优先级调度{if(ins->Priority>Index(m)->Priority){ins->Next=Index(m);front->Next=ins;break;}if(ins->Priority<Index(m)->Priority){if(Index(m)->Next==NULL){Index(m)->Next=ins;ins->Next=NULL;break;}else{front=front->Next;continue;}}}else//同优先级下按先来先服务算法{if(ins->Time_Priority<Index(m)->Time_Priority){if(Index(m)->Next==NULL){ins->Next=NULL;Index(m)->Next=ins;break;}else{front=front->Next;continue;}}else{