版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年濮阳医学高等专科学校单招综合素质考试模拟试卷含答案详解(综合题)
- 2027年榆林职业技术学院单招综合素质考试模拟试卷含完整答案详解【各地真题】
- 2025浙江绍兴漓铁综合开发经营有限公司短期合同工招聘48人笔试历年难易错考点试卷带答案解析
- 2025浙江温州泰顺县水务集团有限公司聘用11人笔试历年常考点试题专练附带答案详解
- 2025浙江宁波望春工业园区管委会下属企业招聘5人笔试历年难易错考点试卷带答案解析
- 2025浙江台州检验认证有限公司招聘劳动合同工1人笔试历年常考点试题专练附带答案详解
- 2025浙商银行上海分行招聘笔试历年典型考题及考点剖析附带答案详解
- 初中八年级英语上册Unit1核心复习课教案
- 初中七年级生物学“细胞模型制作与功能探究”单元教学设计
- 小学数学五年级下册《数据中的生命律动:发豆芽》项目化教学设计
- 电工入场安全教育试卷(含答案)
- CJ/T 225-2011埋地排水用钢带增强聚乙烯(PE)螺旋波纹管
- 考试出题保密协议书
- 神经外科常用英文词汇
- 2025年大唐集团公司招聘笔试参考题库含答案解析
- DL∕ T 736-2010 农村电网剩余电流动作保护器安装运行规程
- GB/T 44148.1-2024承压设备用钢锻件、轧制或锻制钢棒第1部分:一般要求
- 全科医学病案分析报告
- 漆雾凝聚剂技术方案
- 校园保险策划方案
- 现代企业制度
评论
0/150
提交评论