收藏 分享(赏)

最高优先数优先算法.doc

上传人:j35w19 文档编号:6546159 上传时间:2019-04-16 格式:DOC 页数:7 大小:42.50KB
下载 相关 举报
最高优先数优先算法.doc_第1页
第1页 / 共7页
最高优先数优先算法.doc_第2页
第2页 / 共7页
最高优先数优先算法.doc_第3页
第3页 / 共7页
最高优先数优先算法.doc_第4页
第4页 / 共7页
最高优先数优先算法.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、#include #include struct PCBchar p_name20;int p_priority;int p_needTime;int p_runTime;char p_state;struct PCB* next;void HighPriority();void RoundRobin();void Information();char Choice();struct PCB* SortList(PCB* HL);int main()Information();char choice = Choice();switch(choice)case 1:system(“cls“);H

2、ighPriority();break;default:break;system(“pause“);return 0;void Information()printf(“nn“);printf(“ * n“);printf(“ 模拟进程调度算法n“);printf(“ * nnn“); printf(“ 按回车键进入演示程序“);getchar();system(“cls“);char Choice()printf(“nn“);printf(“ * n“);printf(“ 进程调度演示n“);printf(“ * nnn“); printf(“ 1.演示最高优先数优先算法。n“);print

3、f(“ 3.退出程序。nnnn“);printf(“ 选择进程调度方法:“); char ch = getchar();return ch;system(“cls“);void HighPriority()struct PCB *processes, *pt;/pt 作为临时节点来创建链表processes = pt = (struct PCB*)malloc(sizeof(struct PCB); for (int i = 0; i != 3; +i)struct PCB *p = (struct PCB*)malloc(sizeof(struct PCB);printf(“进程号 No.%

4、d:n“, i);printf(“输入进程名:“);scanf(“%s“, p-p_name);printf(“输入进程优先数:“);scanf(“%d“, printf(“输入进程运行时间:“);scanf(“%d“, p-p_runTime = 0;p-p_state = W;p-next = NULL;pt-next = p;pt = p;printf(“nn“);getchar(); /接受回车/processes 作为头结点来存储链表processes = processes-next;int cases = 0;struct PCB *psorted = processes;whi

5、le (1)+cases;pt = processes; /对链表按照优先数排序/psorted 用来存放排序后的链表psorted = SortList(psorted);printf(“The execute number: %dnn“, cases);printf(“* 当前正在运行的进程是:%sn“, psorted-p_name);psorted-p_state = R;printf(“qname state super ndtime runtimen“);printf(“%st%ct%dt%dt%dtnn“, psorted-p_name, psorted-p_state, pso

6、rted-p_priority, psorted-p_needTime, psorted-p_runTime);pt-p_state = W;psorted-p_runTime+;psorted-p_priority-;printf(“* 当前就绪状态的队列为:nn“);/pt 指向已经排序的队列pt = psorted-next;while (pt != NULL)printf(“qname state super ndtime runtimen“);printf(“%st%ct%dt%dt%dtnn“, pt-p_name, pt-p_state, pt-p_priority, pt-p_

7、needTime, pt-p_runTime);pt = pt-next;/pt 指向已经排序的链表,判断链表是否有已用时间啊等于需要时间的pt = psorted;struct PCB *ap;ap = NULL; /ap 指向 pt 的前一个节点while (pt != NULL)if (pt-p_needTime = pt-p_runTime)if (ap = NULL)pt = psorted-next;psorted = pt;elseap-next = pt-next;ap = pt;pt = pt-next;if (psorted-next = NULL)break;getcha

8、r();struct PCB* SortList(PCB* HL)struct PCB* SL;SL = (struct PCB*)malloc(sizeof(struct PCB);SL = NULL;struct PCB* r = HL;while (r != NULL)struct PCB* t = r-next;struct PCB* cp = SL;struct PCB* ap = NULL;while (cp != NULL)if (r-p_priority cp-p_priority)break;elseap = cp;cp = cp-next;if (ap = NULL)r-next = SL;SL = r;elser-next = cp;ap-next = r;r = t;return SL;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 数据结构与算法

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报