📄 shijianpian.cpp
字号:
#include"stdio.h"
#include"iostream.h"
struct pcb
{
char *name;
int time;
int T;
char state;
struct pcb *next;
};
pcb * in()
{
pcb *head,*s,*r;
for(int i=0;i<5;i++)
{
s=(pcb *)new(pcb);
cout<<"进程P"<<i+1<<"运行时间:";
cin>>s->time;
s->next=NULL;
s->T=0;s->state='R';
switch(i)
{
case 0: s->name="p1"; break;
case 1: s->name="p2"; break;
case 2: s->name="p3"; break;
case 3: s->name="p4"; break;
case 4: s->name="p5"; break;
}
if(i==0)
{ head=s;r=s; }
else
{
r->next=s;
if (i==4) s->next=head;
r=s;
}
}
return head;
}
void dis(pcb *h,int m)
{
pcb *s,*r;
r=h; cout<<endl<<"进程对列为: ";
if(m==0) cout<<"空"<<endl;
else
{
for(int i=0;i<5;i++)
{
if((r!=NULL)&&(r->state!='E')) cout<<r->name<<" ";
r=r->next;
}
cout<<endl;
r=h; cout<<endl<<" 进程信息"<<endl;
cout<<" 进程名 要求运行 已运行 状态 指针"<<endl;
for( i=0;i<5;i++)
{
if((r!=NULL)&&(r->state!='E'))
{
cout<<" "<<r->name<<" "<<r->time<<" "<<r->T<<" "<<r->state;
s=r->next;
for(int i=0;i<5;i++)
{
if((s->state!='E'))
{
cout<<" "<<s->name<<endl; break;
}
s=s->next;
}
}
r=r->next;
}
}
}
void run(pcb *h)
{
for(int i=0;i<5;i++)
{
if(h->state!='E')
{
h->T=h->T+1;
cout<<h->name<<" ";
if(h->time==h->T) h->state='E';
}
h=h->next;
}
cout<<endl;
}
void main()
{
pcb *head,*s;int j=1,m=1;
head=in();
dis(head,m);
while(m!=0)
{
cout<<"------------------------------------"<<endl;
cout<<"第"<<j<<"次执行:";
run(head);s=head;m=5;
for(int i=0;i<5;i++)
{
if(s->state=='E') m--;
s=s->next;
}
dis(head,m);
j++;
}
cout<<endl<<"*****调度结束*****"<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -