先来先服务算法实现(c语言)
2017-05-02 08:49
405 查看
#include<stdio.h> #include<stdlib.h> typedef struct process_FCFS{ float arrivetime;//到达时间 float servetime;//服务时间 float finishtime;//完成时间 float roundtime;//周转时间 float daiquantime;//带权周转时间 struct process_FCFS *link;//结构体指针 }FCFS; FCFS *p,*q,*head=NULL; struct process_FCFS a[100]; //按到达时间进行冒泡排序 struct process_FCFS *sortarrivetime(struct process_FCFS a[],int n) { int i,j; struct process_FCFS t; int flag; for(i=1;i<n;i++) { flag=0; for(j=0;j<n-i;j++) { if(a[j].arrivetime>a[j+1].arrivetime) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; flag=1;//交换 } } if(flag==0)//如果一趟排序中没发生任何交换,则排序结束 break; } return a; } //先来先服务算法 void print(struct process_FCFS a[],int n) { int i; for(i=0;i<n;i++) { printf("到达时间:%f",a[i].arrivetime); printf("服务时间:%f",a[i].servetime); printf("完成时间:%f",a[i].finishtime); printf("周转时间:%f",a[i].roundtime); printf("带权周转时间:%f",a[i].daiquantime); printf("\n"); } } void Fcfs(struct process_FCFS a[],int n) { int i; a[0].finishtime=a[0].arrivetime+a[0].servetime; a[0].roundtime=a[0].finishtime+a[0].arrivetime; a[0].daiquantime=a[0].roundtime/a[0].servetime; for(i=0;i<n;i++) { if(a[i].arrivetime<a[i-1].finishtime) { a[i].finishtime=a[i-1].finishtime+a[i].servetime; a[i].roundtime=a[i].finishtime-a[i].arrivetime; a[i].daiquantime=a[i].roundtime/a[i].servetime; } else { a[i].finishtime=a[i].arrivetime+a[i].servetime; a[i].roundtime=a[i].finishtime-a[i].arrivetime; a[i].daiquantime=a[i].roundtime/a[i].servetime; } } printf("先来先服务\n"); print(a,n); } //主函数 void main() { int n,i; printf("请输入有几个进程\n"); scanf("%d",&n); for(i=0;i<n;i++) { printf("arrivetime"); scanf("%f",&a[i].arrivetime); printf("servetime"); scanf("%f",&a[i].servetime); } Fcfs(a,n); }
相关文章推荐
- 先来先服务算法实现(c语言)
- 先到先服务(FCFS)算法C语言,Java语言实现
- C语言实现的扫描线种子填充算法
- 一个UUID生成算法的C语言实现 --- WIN32版本
- 10个重要的算法C语言实现源代码(其2--牛顿插值)
- 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
- 10个重要的算法C语言实现源代码(8-9-10-----秦九昭和幂法和高斯塞德尔)
- 二维、结构网格单相流SIMPLE 算法的C语言实现
- 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔 (转帖)
- 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
- 数值计算方法与算法:C语言实现利用Gauss消元法解方程组
- 线性查找算法的C语言实现
- 一个UUID生成算法的C语言实现 --- WIN32版本
- 有关统计单词频率的算法c语言实现
- C语言中实现 点在多边形内 算法
- 10个重要的算法C语言实现源代码(其1-拉格朗日)
- 有关统计单词频率的算法c语言实现
- md5 算法的c语言实现及应用
- 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
- 10个重要的算法C语言实现源代码(其4和5---龙贝格和牛顿迭代)