博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
借用一下界面
阅读量:6868 次
发布时间:2019-06-26

本文共 2554 字,大约阅读时间需要 8 分钟。

#include 
#include
#include
using namespace std;/***************************************************************************************************************** Question: 设计一个按优先数调度算法实现处理器调度的程序。 输入 (程序名+总运行时间+优先级),输入为 0 结束 InPut: P1 2 1 P2 3 5 P3 1 3 P4 2 4 P5 4 2 0*****************************************************************************************************************/typedef struct Node{ string name; int leval; //优先数 int time; //总运行时间 int LeftTime; //剩余运行时间 char now; //状态 R表示就绪态,E表示结束态 Node *next;}*LinkList;LinkList creat() //创建链表{ LinkList l; l=new(Node); //当结构体里面有 string 字符串类型的数据时,必须用 new 来分配空间,不能用malloc. l->next=NULL; Node *r,*s; int flag=1; r=l; while(flag) { string Name; int Time,Leval; cin>>Name; if(Name != "0"){ cin>>Time>>Leval; //每次运行进程之前确定进程的
<优先级>
<运行时间>
s=new(Node); s->name=Name; s->time=Time; s->leval=Leval; s->LeftTime=Time; //剩余运行时间初始化为总运行时间 s->now='R'; //进程状态初始化为 R (就绪状态) r->next=s; r=s; //cout<<"Name: "<
name<<" Time: "<
time<<" Leval: "<
leval<
next=NULL; } } return l;}void order(LinkList l) //根据优先级进行排序 思路:冒泡排序{ int length=0; Node *r,*L,*p; p=l; L=l; r=l; while(r->next != NULL){ r=r->next; length++; } r=L->next; for(int i = 1;i < length;i ++){ for(int j = 0;j <= length-i; j ++){ //cout<<"r->leval: "<
leval<<" L->next->leval: "<
next->leval<
leval > L->next->leval){ p->next=r->next; r->next=L->next; L->next=r; r=p; //注意:找到符合条件的结点时。r-next 指向了 头结点->next。 //所以重新复制为: p结点(保存的r结点) } p=r; r=r->next; } L=L->next; //这两个语句是核心! r=L->next; }}void Output(LinkList l){ Node *r; r=l; cout<<"****************************************"<
next != NULL){ r=r->next; cout<<"Name:"<
name<<" LeftTime:"<
LeftTime<<" Leval:"<
leval<<" Now:"<
now<<" *"<
next != NULL && r->next->LeftTime != 0){ //好坑啊!这里!如果把两个判断语句调换顺序。程序就会崩。 //理由:程序会先判断 r->next->LeftTime != 0 这个语句。 //但是最后一个结点即 r->next->LeftTime 没有空间 //因此无法判断,程序崩溃。判断语句一定要可判断的语句才可以 cout<<"当前运行的程序名为:"<
next->name<
next->leval --; r->next->LeftTime --; if(r->next->LeftTime == 0){ cout<<"该程序运行结束,退出进程"<
next->now = 'E'; l->next=r->next->next; } cout<<"运行后的进程块为:"<

转载于:https://www.cnblogs.com/Jstyle-continue/p/6352027.html

你可能感兴趣的文章
判断整除(动态规划,递推)
查看>>
题解 P1004 【方格取数】
查看>>
【OCP-052】052最新考试题库分析整理-第7题
查看>>
vuex相关(actions和mutation的异曲同工)
查看>>
Linux常用命令总结
查看>>
即时通讯软件的发展演变
查看>>
java基础总结
查看>>
算法复杂度
查看>>
Jsonlib 属性过滤器
查看>>
List 去重
查看>>
Python基础之各种推导式玩法
查看>>
Android开发之动态设置字体的样式和粗细
查看>>
Linux系统下 为命令配置别名
查看>>
每天一个小算法(Shell Sort3)
查看>>
如何去掉给图片添加链接后的蓝色边框
查看>>
在线用户的简单的统计和显示(只是一种很局限的在线用户统计显示,先留着,以后再研究复杂的)...
查看>>
Centos下MongoDB数据库的安装以及配置开机自启动(三)
查看>>
关于window.showModalDialog 父子窗口传值,及刷新父窗等问题
查看>>
linux内核驱动module_init解析(1)
查看>>
linux常用命令&以及帮助命令
查看>>