按优先数调度算法实现处理机调度C++程序代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
using namespace std;
struct PCB
{
char Name; //进程名
float Time; //要求运行时间
int Level; //优先数
bool state; //状态,1表就绪
PCB *next; //指针
};
void Init(PCB *head)
{
int num;
PCB *s,*p;
cout<<"请输入进程数";
cin>>num;
for(int i=0;i { p=head; s=new PCB; cout<<"请依次输入进程名要求运行时间优先数"; cin>>s->Name>>s->Time>>s->Level; if(s->Time>0) { s->state =1; while(p->next) { if(s->Level >p->next->Level )break; p=p->next ; } s->next=p->next; p->next=s; } else { s->state =0; cout<<"此进程要求运行时间时间不符合要求,不添加入进程列表"; } } } int Run(PCB *head) { PCB *cur,*p; p=head; cur=p->next; p->next =cur->next; cur->Level--; cur->Time--; cout<<"此次执行的进程信息(执行后):进程名"; cout< if(cur->Time<=0) { cout<<"状态为完成态"< delete cur; } else { cout<<"状态为就绪态"< while(p->next) { if(cur->Level >p->next->Level )break; p=p->next ; } cur->next=p->next; p->next=cur; } cout<<"此次执行后的进程列表序列为:"; p=head; while(p->next) { cout< p=p->next ; } cout< } int main() { PCB *Head; Head=new PCB; Head->next =NULL; Init(Head); while(Head->next ) { Run(Head); } return 0; }