- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
#includeiostream
#define N 4
#include string
//时间片系列
#includestdio.h
#includestdlib.h
#define MAX 4 //进程数量
#define RR 4 //时间片大小
//时间片系列
using namespace std;
struct time{
string name;
float arriveTime;
float runTime;
float finishTime;
float totalTime;
float weightTotalTime;
};
//时间片系列
struct pro
{
char num;
int arriveTime;
int burst;
int rt; //记录进程被运行的次数
struct pro *next;
};
int TOTALTIME; //记录所有进程的总时间
//时间片系列
//函数声明
struct pro* creatList();
void insert(struct pro *head,struct pro *s);
struct pro* searchByAT(struct pro *head,int AT);
void del(struct pro* p);
int getCount(struct pro *head,int time);
struct pro* searchEnd(struct pro *head);
void move(struct pro *headF,struct pro *headT,int n);
struct pro* creatList() //创建链表,按照进程的到达时间排列,记
录所有进程的信息
{
struct pro* head=(struct pro*)malloc(sizeof(struct pro));
head-next=NULL;
struct pro* s;
int i;
TOTALTIME=0;
cout输入进程名 到达时间 运行时间(example:a 0 0):endl;
coutname arrivetime runtimeendl;
for(i=0;iMAX;i++)
{
s=(struct pro*)malloc(sizeof(struct pro));
cins-num;
cins-arriveTime;
cins-burst;
TOTALTIME+=s-burst; //计算总时间
s-rt=1; //rt的初始值为1
s-next=NULL;
insert(head,s);
}
return head; //到达队列中的进程按照其到达时间的先后顺序排列
}
void insert(struct pro *head,struct pro *s) //插入节点
{
struct pro *p=searchByAT(head,s-arriveTime);
s-next=p-next;
p-next=s;
return;
}
struct pro* searchByAT(struct pro *head,int AT) //查找第一个
到达时间大于等于AT的节点,返回其前一个指针
{
struct pro *p,*q;
p=head;
q=head-next;
while(q!=NULLq-arriveTime=AT)
{
p=q;
q=q-next;
}
return p;
}
void del(struct pro* p) //删除p的下一个节点
{
struct pro *tmp;
tmp=p-next;
p-next=tmp-next;
free(tmp);
return;
}
int getCount(struct pro *head,int time) //察看在time之前到达
但未移动到运行队列的进程数量
{
int count=0;
struct pro *s,*t;
s=head;
t=s-next;
while(t!=NULLt-arriveTime=time)
{
s=t;
t=t-next;
count++; //count记录当前时刻到达的进程数
}
return count;
}
struct pro* searchEnd(struct pro *head) //查找并返回循坏队列
的尾节点的前一个节点
{
struct pro *p,*q;
p=head;
q=head-next;
您可能关注的文档
最近下载
- 新解读《GB_T 6618-2009硅片厚度和总厚度变化测试方法》最新解读.docx VIP
- 英语专业四级(TEM4)词汇辨析.ppt VIP
- 2016款昂科威使用说明书.pdf VIP
- 三年级上册《体育与健康》全册教案.docx VIP
- YD∕T 2165-2017 通信用模块化交流不间断电源(可复制版).pdf
- 昂科威使用说明!昂科威问题汇总!从小白到高手的一瞬间!.doc VIP
- 2022蓝天消防JB-QB-5SI型火火报警控制器用户手册.docx VIP
- XXX加气站Z职业卫生预评价报告.pdf VIP
- Brunnstrom技术Brunnstrom技术Brunnstrom技术.ppt VIP
- “三全育人”工作实施意见.docx VIP
原创力文档


文档评论(0)