**
先来先服务算法(FCFS)
**
就是先到达的先执行
代码是用C加加写的
需要先建立一个Win32 Console Application工程,在其中建一个C++的文件
使用的是冒泡法对到达时间进行从小到大排序
流程图
源代码
#include “stdio.h”
#define N 20
struct process
{
int no;//序号
int arrtime;//到达时间
int runtime;//运行时间
int starttime;//开始时间
int endtime;//结束时间
int roundtime;//周转时间
};
void bubblesort(process a[],int n)//对到达时间进行从小到大排序
{
int i,k;
process t;
for(i=0;i<n;i++)
for(k=0;k<n-1;k++)
{
if(a[k].arrtime>a[k+1].arrtime)
{
t=a[k];
a[k]=a[k+1];
a[k+1]=t;
}
}
}
void FCFS(process a[],int n)//先来先服务算法
{
a[0].starttime=a[0].arrtime;
a[0].endtime=a[0].starttime+a[0].runtime;
a[0].roundtime=a[0].endtime-a[0].arrtime;
for(int i=1;i<n;i++)
{
//判断上一个作业的结束时间和当前作业的到达时间
if(a[i-1].endtime>a[i].arrtime)
a[i].starttime=a[i-1].endtime;
else
a[i].starttime=a[i].arrtime;
a[i].endtime=a[i].starttime+a[i].runtime;
a[i].roundtime=a[i].endtime-a[i].arrtime;}
}
void printarray(process a[],int n)
{
int i;
printf(“作业号\t到达时间\t执行时间\t开始时间\t结束时间\t周转时间\n”);
for(i=0;i<n;i++)
{
printf("%d\t %d\t\t %d\t\t %d\t\t %d\t\t %d\n",a[i].no,a[i].arrtime,a[i].runtime,a[i].starttime,a[i].endtime,a[i].roundtime);
}
}
void main()
{
process a[N]={0};
int n;//实际运行的进程个数
printf(“请输入作业:”);
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf(“作业号…”);
scanf("%d%d%d",&a[i].no,&a[i].arrtime,&a[i].runtime);
}
}
运行
#本人是根据老师讲的列题,分享自己的作业,如有侵权,非常抱歉,请联系我,马上会删。