±àд²¢µ÷ÊÔÒ»¸ö¶àµÀ³ÌÐòϵͳµÄ×÷Òµµ÷¶ÈÄ£Äâ³ÌÐòÎå
±àд²¢µ÷ÊÔÒ»¸ö¶àµÀ³ÌÐòϵͳµÄ×÷Òµµ÷¶ÈÄ£Äâ³ÌÐò¡£ ×÷Òµµ÷¶ÈËã·¨£º²ÉÓûùÓÚÓÅÏȼ¶µÄ×÷Òµµ÷¶È¡£ ¿ÉÒԲο¼¿Î±¾ÖеÄÀý×Ó×ÔÐÐÉè¼Æ¡£
#include <stdio.h> #include <stdlib.h>
#define getjch(type) (type*)malloc(sizeof(type)) #define N 10
struct jcb { /* ¶¨Òå×÷Òµ¿ØÖÆ¿éPCB */ char name[10];
float needtime; /*ÔËÐÐʱ¼ä*/ float arrivetime;/*Ìύʱ¿Ì*/ float storage[N];/*ϵͳ×ÊÔ´*/ struct jcb* link;
}*ready=NULL,*pb=NULL,*p;
typedef struct jcb JCB;
float Tc,Ti,Wi,T=0;/*Íê³Éʱ¿Ì,ÖÜתʱ¼ä,´øÈ¨ÖÜתʱ¼ä,ʱ¼äÁ¿*/ float TiSum=0,WiSum=0;/*ƽ¾ùÖÜתʱ¼ä,´øÈ¨aƽ¾ùÖÜתʱ¼ä*/ float source[N]; int n;
void input(); /*ÊäÈë×÷ÒµÐÅÏ¢*/
int space(); /* ·µ»Ø¾ÍÐ÷¶ÓÁÐÖÐ×÷ÒµµÄÊýÄ¿*/ void fcfs(); /*ÏÈÀ´ÏÈ·þÎñËã·¨*/ void disp(JCB *pr); /* ÏÔʾÏàÓ¦µÄ×÷Òµ*/ void running(); /*ÔËÐÐ×÷Òµ×é*/ void destroy(); /* ³·Ïú×÷Òµ*/
void input() /* ½¨Á¢×÷Òµ¿ØÖƿ麯Êý*/ {
int i,k,num;
printf("ÇëÊäÈëËùÓµÓеÄ×ÊÔ´ÖÖÀà:"); scanf("%d",&n);
printf("ÊäÈëϵͳËùÓµÓÐ×ÊÔ´Êý:\\n"); for(i=0;i<n;i++) {
printf("×ÊÔ´[%d]:",i);
scanf("%f",&source[i]); }
printf("\\n ÊäÈë×÷ÒµÊýÁ¿:"); scanf("%d",&num); for(i=0;i<num;i++) {
printf("\\n ×÷ÒµºÅ[%d]:\\n",i); p=getjch(JCB);
printf("ÊäÈë×÷ÒµÃû:");
scanf("%s",p->name); printf("ÊäÈëÌύʱ¼ä:");
scanf("%f",&p->arrivetime); printf("ÊäÈëÔËÐÐʱ¼ä:");
scanf("%f",&p->needtime); printf("ÊäÈëËùÐè×ÊÔ´Êý:\\n"); for(k=0;k<n;k++) {
printf("×ÊÔ´[%d]:",i);
scanf("%f",&p->storage[k]); }
printf("\\n"); p->link=NULL;
fcfs(); } }
int space() { int l=0; JCB* pr=ready; while(pr!=NULL) { l++;
pr=pr->link; } return(l); }
void disp(JCB * pr) /*½¨Á¢×÷ÒµÏÔʾº¯Êý,ÓÃÓÚÏÔʾµ±Ç°×÷Òµ*/ { int i;
printf("\\n%6s\\t%6s\\t%6s\\t","
×÷
Òµ
","ÔËÐÐʱ¼ä","Ìύʱ¿Ì");
Ãû