#include<stdio.h>
#include<malloc.h>
#define n 20
#define high 20
#define pian 5//时间片
int shu=0;//进程数
typedef struct pcb
{
char name[n];//进程名
struct pcb *next;//链接指针
int arr;//到达时间
int fin;//估计运行时间
char sta;//进程状态
int gra;//优先级
int yun;//运行时间
}pcb;
void fcfs(pcb *w)//先来先服务
{
pcb *p,*q;
p=w->next;
q=(pcb *)malloc(sizeof(pcb));
int x,y,tr;//每个进程剩余的时间和运行时间,周转时间
int i,j;
int turn=0;//运行平均周转时间
int u=p->arr;
for(j=0;j<shu;j++)
{
x=p->fin;
y=0;
printf("\n**********************");
for(i=0;i<p->fin;i++)
{
printf("进程%s正在运行\n",p->name);
printf("剩余时间为%d,运行时间为%d\n",x,y);
x--;y++;
}
q=p->next;
printf("\n就绪队列中的进程有:\n");
while(q)
{
printf("%s",q->name);
q=q->next;
}
printf("\n进程%s完成\n",p->name);
p->sta='c';
u=u+p->fin;
tr=u-p->arr;
turn=turn+tr;
printf("进程的周转时间为%d\n",tr);
p=p->next;
}
turn=turn/shu;
printf("\n**********************\n");
printf("平均周转时间是%d\n",turn);
}