版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include<>#include<>#include<>typedefstructProcessNode{//进度结点的基本构造charname;//进度名intservice_time;//服务时间intarrive_time;//抵达时间intpriority;//优先级structFCFS_time{//先到先服务intfinish_time;//达成时间intturnaround_time;//周转时间floatweigtharound_time;//带权周转时间}FCFS_time;structSJF_time{//短作业优先intfinish_time;intturnaround_time;floatweigtharound_time;intflag;}SJF_time;structRR_time{//时间片轮转的结点intfinish_time;intturnaround_time;floatweigtharound_time;intflag_time;//赋值为进度的服务时间,为0则进度达成}RR_time;structPri_time{//优先权非抢占式intfinish_time;intturnaround_time;floatweigtharound_time;}Pri_time;structProcessNode*next;}ProcessNode,*Linklist;voidmain(){intchoice;Linklistp,head;Linklistread_information();LinklistFCFS_scheduling(LinklistLinklistSJF_scheduling(LinklistLinklistRR_scheduling(LinklistLinklistPri_scheduling(Linklist
head);head);head);head);head=read_information();//读入进度的基本信息do{p=head->next;printf("\n");printf("**********进度初始信息输出**********\n");//输出初始化后的进度基本信息printf("\n");printf("进度名称");printf("抵达时间");printf("服务时间");printf("优先级");printf("\n");while(p){printf("printf("printf("printf("printf("\n");
%c",p->name);%d",p->arrive_time);%d",p->service_time);%d",p->priority);p=p->next;}printf("\n");printf("************************************\n");//printf("\n");printf("1、FCFS----先到先服务\n");printf("2、SJF-----短作业优先\n");printf("3、RR------时间片轮转\n");printf("4、Pri-----优先权调动\n");printf("5、退出\n");printf("\n");printf("************************************\n");printf("\n");
输出进度的调用选择项printf("
请在
1—5之间选择
:
");scanf("%d",&choice);printf("\n");printf("\n");switch(choice){case1:FCFS_scheduling(head);break;case2:SJF_scheduling(head);break;case3:RR_scheduling(head);break;case4:Pri_scheduling(head);break;//case5:exit();}}while(choice!=5);}Linklistread_information()//进度读入函数{inti;intnum;ProcessNode;Linklistpro;Linklistp;Linklisthead;printf("\n");printf("************进度调动算法************\n");printf("\n");printf("请输入进度的个数:");scanf("%d",&num);printf("\n");printf("*************初始化信息*************\n");printf("\n");head=(Linklist)malloc(sizeof(ProcessNode));//头结点head->next=NULL;p=head;for(i=1;i<=num;i++){pro=(Linklist)malloc(sizeof(ProcessNode));//创立进度结点printf("输入第%d个进度信息:\n",i);printf("请输入进度名:");fflush(stdin);scanf("%c",&pro->name);printf("抵达时间:");scanf("%d",&pro->arrive_time);printf("服务时间:");scanf("%d",&pro->service_time);printf("优先级↑:");scanf("%d",&pro->priority);//pro->next=head->next;head->next=pro;//逆序建链p->next=pro;p=pro;//次序建链//p++;pro->next=NULL;}printf("\n");returnhead;}LinklistFCFS_scheduling(Linklisthead)//先到先服务算法函数{Linklistp;Linklistq;//指向前一进度p=head->next;while(p)//初始化进度的达成时间、周转时间、带权周转时间,初值均赋为0{p->=0;p->=0;p->=0;p=p->next;}p=q=head->next;p->=p->arrive_time;//防止第一个进度抵达时间不为0while(p){if(p->arrive_time<=q->//下一进度已抵达,在等候中{p->=(p->service_time)+(q->;//服务时间p->=(p->-(p->arrive_time);//周转时间p->=(float)(p->/(p->service_time);//带权周转时间}else{p->=p->service_time+p->arrive_time;//服务时间p->=(p->-(p->arrive_time);//周转时间p->=(float)(p->/(p->service_time);//带权周转时间}q=p;p=p->next;}p=head->next;printf("********************************FCFS********************************\n");//输出先到先服务调动后的进度信息printf("\n");printf("进度名称");printf("抵达时间");printf("服务时间");printf("优先级");printf("达成时间");printf("周转时间");printf("带权周转时间printf("\n");while(p){
");printf("printf("printf("printf("printf("printf("printf("
%c",p->name);%d",p->arrive_time);%d",p->service_time);%d",p->priority);%d",p->;%d",p->;%",p->;printf("\n");p=p->next;}printf("\n");printf("**********************************************************************\n");printf("\n");returnhead;}LinklistSJF_scheduling(Linklisthead)//短作业优先算法{Linklistp,r;Linklistq;//指向前一进度结点intnum=0;//记录进度个数intadd_flag=0;//进度达成服务个数intservice_time_min;intarrive_time;intk;p=head->next;//首元结点while(p)//初始化进度的达成时间、周转时间、带权周转时间,初值均赋为0{p->=0;p->=0;p->=0;p->=0;++num;q=p;p=p->next;}q->next=head->next;//将创立的进度行列变成循环行列p=head->next;q=p;p->=p->arrive_time+p->service_time;p->=(p->-(p->arrive_time);//周转时间p->=(float)(p->/(p->service_time);//带权周转时间q->=p->;p->=1;add_flag=1;p=p->next;do{if(p->==1){p=p->next;}elseif((p->arrive_time)>(q->){service_time_min=p->service_time;arrive_time=p->arrive_time;while(p->arrive_time==arrive_time&&p->==0)//找寻最短的作业{if((p->next->service_time)<(p->service_time)){service_time_min=p->next->service_time;p=p->next;}else{p=p->next;}}p=q->next;r=q;while(p->service_time!=service_time_min){p=p->next;}//指针指向最短作业p->=p->arrive_time+p->service_time;p->=1;++add_flag;p->=(p->-(p->arrive_time);//周转时间p->=(float)(p->/(p->service_time);//带权周转时间q=p;p=r->next;}else{k=0;service_time_min=p->service_time;while(((p->arrive_time)<=(q->)&&k<=num)//找寻最短的作业{if(p->==1){p=p->next;++k;}elseif((p->!=1)&&((p->service_time)<service_time_min)){service_time_min=p->service_time;p=p->next;++k;}else{p=p->next;++k;}}p=q->next;r=q;while(p->service_time!=service_time_min){p=p->next;}//指针指向最短作业p->=q->+p->service_time;p->=(p->-(p->arrive_time);//周转时间p->=(float)(p->/(p->service_time);//带权周转时间p->=1;++add_flag;//q=p;p=p->next;q=p;p=r->next;}}while(add_flag!=num);for(p=head->next;num>0;num--)//断开循环行列{q=p;p=p->next;}q->next=NULL;p=head->next;//指向链首,输出短作业调动后的进度信息printf("\n");printf("********************************SJF*********************************\n");printf("\n");printf("进度名称");printf("抵达时间");printf("服务时间");printf("优先级");printf("达成时间");printf("周转时间");printf("带权周转时间printf("\n");while(p){
");printf("printf("printf("printf("printf("printf("printf("
%c",p->name);%d",p->arrive_time);%d",p->service_time);%d",p->priority);%d",p->;%d",p->;%",p->;printf("\n");p=p->next;}printf("\n");printf("**********************************************************************\n");printf("\n");returnhead;}LinklistRR_scheduling(Linklisthead)//时间片轮转算法{Linklistq;//指向前一进度结点Linklistp;intq_time;//时间片大小intnum=0;//记录进度个数intadd_flag=0;//进度达成服务个数printf("请输入时间片的大小:");scanf("%d",&q_time);p=head->next;while(p)//初始化进度的达成时间、周转时间、带权周转时间,初值均赋为0{p->=0;p->=0;p->=0;p->=p->service_time;q=p;++num;p=p->next;}q->next=head->next;//将创立的进度行列变成循环行列p=head->next;q->=p->arrive_time;do{/*printf("\n");printf("**************************************************************\n");printf("%c",p->name);printf("%d",p->arrive_time);printf("%d",p->service_time);printf("%d",p->priority);printf("%d",p->;printf("\n");*/if((p->>(q_time))//服务时间大于时间片{p->=(q->+(q_time);//累加达成时间p->=(p->-(q_time);if((p->next->arrive_time)<=(p->)//有进度等候{q=p;p=p->next;}else//目行进度未达成,无进度等候,指针不向后移{q=p;}}elseif((p->==0)//进度已经达成{p=p->next;}else{p->=(q->+(p->;p->=0;++add_flag;p->=(p->-(p->arrive_time);//周转时间p->=(float)(p->/(p->service_time);//带权周转时间if((p->next->arrive_time)<(p->)//有进度等候{q=p;p=p->next;}else//目行进度达成,无进度等候,指针向后移//{q=p;q->=p->next->arrive_time;}{p=p->next;q=p;q->=p->arrive_time;}}}while(add_fl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年高考生物终极押题密卷1(山东卷)含答案
- 必须熟知的50个安全管理术语
- 安全生产突发事件应急预案措施(7篇)
- 溧水中等专业学校文经部第1周工作安排
- 《武林外传》中的邱小冬竟是哈佛毕业的
- 专题22 电容器带电粒子在电场中的运动(原卷版)
- 数学与应用数学专业人才培养方案2
- IMT-2020推进组-5G概念白皮书-网络部分-v4
- 《台湾省的地理环境与经济发展》知识梳理型课件
- 2024-2034年中国酵母市场深度评估及投资方向研究报告
- 如何制定适合自己的专升本学习计划
- 乙肝病毒感染知识教学设计
- 创业法学仙乐牌加盟创业团队成员合作框架协议
- 人教新起点小学四年级英语下册同步练习试题(全册)
- 信息处理技术员考试大纲课件
- 《未来汽车》课件
- 有关国有企业招待费管理的几点思考
- DB3301T 1088-2018 杭州龙井茶栽培技术规范
- 脐尿管囊肿护理查房课件
- 医院综合布线子系统设计方案h
- 以选择为话题的演讲课件
评论
0/150
提交评论