1. #include
2. #define MAX 5
3. typedef int Time;
4. typedef struct
5. {
6. Time DD;//到达时间
7. Time FW;//服务时间
8. Time WC;//完成时间
9. int FLAG;
10.
11. } TCB;
12. typedef struct
13. {
14. TCB job[MAX];
15. int front;//队首
16. int reDD; //队尾
17. } SQ;
18. int main()
19. {
20. int K=MAX;
21. Time time=0;
22. TCB A= {0,4},B= {1,3},C= {2,4},D= {3,2},E= {4,4};
23. TCB tcb[MAX]= {A,B,C,D,E};
24. double Tatime[MAX]= {0}; //周转时间
25. double WTatime[MAX]= {0}; //带权周转时间
26.
27. TCB tcb0[MAX]= {A,B,C,D,E};
28. SQ sq;
29. sq.front=sq.reDD=0;
30. printf("FCFS算法\n");
31. for(time=0; K; time++)
32. {
33. for(int i=0; i=tcb1[i].DD)
77. {
78. MIN=i;
79. break;
80. }
81. }
82. for(int i=0; itcb1[i].FW&&time>=tcb1[i].DD)
85. {
86. MIN=i;
87. }
88. }
89. }
90. if(time!=0)
91. {
92. tcb1[MIN].FW--;
93. }
94. if(MIN!=-1&&tcb1[MIN].FW==0)
95. {
96. tcb1[MIN].WC=time;
97. tcb1[MIN].FW=tcb[MIN].FW;
98. printf("\n进程%d完成 到达时间:%d 服务时间:%d 完成时间:%d\n",MIN,tcb1[MIN].DD,tcb1[MIN].FW,tcb1[MIN].WC);
99. Tatime[MIN]=(double)tcb1[MIN].WC-(double)tcb1[MIN].DD;
100. WTatime[MIN]=(double)Tatime[MIN]/(double)tcb1[MIN].FW;
101. printf("周转时间:%.2f 带权周转时间:%.2f\n",Tatime[MIN],WTatime[MIN]);
102. K--;
103. tcb1[MIN].FW=2147483647;
104. MIN=-1;
105. }
106. }
107. for(int i=0; i