是操作系统进程的一个调用;
可能是类中的那个类定义有问题吧!!
#include<string>
#include<iostream>
#include<cstdlib>
using namespace std;
#define NULL 0
class Pcb
{
public:
Pcb(string Name,string Adress,int Time,int FRIS,char Estate)
{name=Name;
adress=Adress;
times=Time;
FRI=FRIS;
estate=Estate;
}
~Pcb();
string Getname(){return name;}
string Getadress(){return adress;}
int Gettime(){return times;}
int GetFRI(){return FRI;}
int Getestate(){return estate;}
void changestate()//状态改变
{
if(times==0)
estate='E';
FRI=0;
}
void runtimes()//运行优先级及次数减少
{
times=times-1;FRI=FRI-1;
}
Pcb* next;
private:
string name;
string adress;
int times;
int FRI;
char estate;
};//类的声明
Pcb findFIR(Pcb a)//查找优先级
{
Pcb* b;
Pcb* c;
b=&a;
int temp;
temp=b->GetFRI();
c=&a;
while(b->next!=NULL)
{
b=b->next;
if(temp<b->GetFRI())
{temp=b->GetFRI();
c=b;
}
return *c;
}
}
void print(Pcb a)//输出信息
{
cout<<a.Getname()<<"的运行次数:"<<a.Getntime()<<" 的优先级:"<<a.GetFIR()<<" 的状态:"<<a.Getestate()<<endl;
a.runtimes();
a.changestate();
}
bool penduan(Pcb a)//判断一个链表是否有可执行的类
{
Pcb* p;
int sum=0;
while(*p=a;p->Getestate="R"&&*p!=NULL;*p=p->next)
{
sum=sum+p->GetFIRS();
}
if(sum>0)
return 1;
else
return 0;
}
int main()
{
Pcb* p,q;
string Name,Adress;
int i,Time,FIRS,Estate;
for(i=1;i<6;i++)
{ Name="k[i]";
Adress="k[i]";
Time=rand()%6;
FIES=rand()%5;
Eastate="R";
Pcb k[i]=new Pcb(Name,Adress,Time,FIRS,Eastate);
}
k[2].next=k[4];
k[4].next=k[3];
k[3].next=k[5];
k[5].next=k[1];
k[1].next=NULL;
*p=k[2];
while(penduan(p))
{ *q=findFIR(p);
print(*q);
}
}
[此贴子已经被作者于2006-3-7 19:32:08编辑过]