📄 lab.cpp
字号:
#include<stdio.h>
#include<stdlib.h>
/*定义进程控制块*/
typedef struct JCB
{
char num[5]; //作业号
char name[20]; //作业名
char state; //运行状态
int tijiaotime; //提交作业时间
int starttime; //作业开始时间
int finishtime; //结束时间
int needtime; //运行需要时间
struct JCB *next; //指向下个作业
}jcb;
int time=10000,n; //计时器
jcb *head=NULL,*p,*q;
/*定义程序运行函数*/
void run_fcfo(jcb *p1)
{
time = p1->tijiaotime > time? p1->tijiaotime:time;
p1->starttime=time;
printf("\nNow Time:%d,StartProcessName:%s\n",time,p1->name);
time+=p1->needtime;
p1->state='F';
p1->finishtime=time;
printf("NAME starttime servicetime finishtime\n");
printf("%s %d %d %d ",p1->name,p1->starttime,p1->needtime,p1->finishtime);
}
/*定义fcfo函数*/
void fcfo()
{
int i,j,t;
for(j=0;j<n;j++)
{
p=head;
t=10000;
for(i=0;i<n;i++) //找到当前未完成的作业
{
if(p->tijiaotime<t && p->state=='W')
{
t=p->tijiaotime;
q=p; //标记当前未完成的作业
}
p=p->next;
}
run_fcfo(q);
}
}
/*创建进程*/
void getInfo()
{
int num;
printf("\nPlease input the number of the process:");
scanf("%d",&n);
for(num=0;num<n;num++)
{
p=(jcb *)malloc(sizeof(jcb));
if(head==NULL) {head=p;q=p;}
printf("input:\nNUM,NAME,ARRIVE TIME,SERVICE TIME\n");
scanf("%s\t%s\t%d\t%d",&p->num,&p->name,&p->tijiaotime,&p->needtime);
if(p->tijiaotime < time) time=p->tijiaotime;
q->next=p;
p->starttime=0;
p->finishtime=0;
p->next=NULL;
p->state='W';
q=p;
}
}
/*主函数*/
void main()
{
printf("先来先服务算法模拟程序:");
getInfo();
fcfo();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -