p=Q.front->next;
printf(\已输入的五个进程为:\\n\ while(p!=NULL){
printf(\进程名是:%s,状态为:就绪,优先数为:%d,需要运行的时间
为:%d\\n\ } }
LinkQueue running(LinkQueue Q)//建立进程就绪函数 {
if(k->time==0) {
printf(\运行后进程 [%s] 已完成 ,状态为:结束。\\n\ free(k); }else{
(k->pri)--;//每运行一次优先数减“1” (k->time)--;//每运行一次运行时间减“1” p=p->next;
printf(\运行后的优先数是:%d,需要的运行时间是:%d\\n\\n\ }
return Q; }
void main()//最后是主函数
Q=sort(Q,k);
{ int m=0; LinkQueue p; p=InitQueue(); p=input(p); check(p);
while((p.front->next)!=NULL) { m++; }
printf(\进程已经完成.\\n\}
程序运行结果截图如下: 实验体会:
刚开始的时候不知道用什么数据结构,只知道PCB这个结构中有什么,根据题目得知其中包括进程的名字、优先运行数、运行时间。在看了数据结构的书和一个已经写好的程序后得知,应该使用链式队列。但是初始化链式队列之后,问题就来了,应该定义哪些函数来运行进程满足题目的要求??根据题目分析出,需要四个函数,对进程的优先数进行
k=p.front->next;//k指向对头节点 p.front->next=k->next;//删除对头节点 k->next=NULL;
printf(\第%d次运行,被选中进程是:%s \p=running(p);
从小到大排列的sort()函数,对进程进行检查和判断的check()函数,对进程进行优先数减1和运行时间减1的running()函数,最后是主函数main()。运行时出现了指针混乱的问题和记录运行的变量没有初始化的问题,最为困难的是sort函数的编写。