#include <stdio.h>//引入输入输出流文件
#include <stdlib.h>
struct PCB
{
int pid;//进程标识符
int rr;//已运行时间
int time;//进程要求运行时间
char sta;//进程的状态
struct PCB *next;//链接指针
};
struct PCB pcb1,pcb2,pcb3,pcb4,pcb5,*tail,*head,*rp;
void init()//初始化各个进程的运行时间
{
int time;
pcb1.pid = 1;//用结构体进行赋初值
pcb2.pid = 2;
pcb3.pid = 3;
pcb4.pid = 4;
pcb5.pid = 5;
pcb1.rr =pcb2.rr =pcb3.rr =pcb4.rr =pcb5.rr = 0;//各个间片赋值是0
pcb1.sta = pcb2.sta = pcb3.sta = pcb4.sta = pcb5.sta = ‘w’;//用w字符表示wait等待
printf(“请输入进程p1需要运行的时间:”);
scanf("%d",&time);
pcb1.time =time;//把时间元素赋值给结构体元素
printf(“请输入进程p2需要运行的时间:”);
scanf("%d",&time);
pcb2.time=time; //把时间元素赋值给结构体元素
printf(“请输入进程p3需要运行的时间:”);
scanf("%d",&time);
pcb3.time=time; //把时间元素赋值给结构体元素
printf(“请输入进程p4需要运行的时间:”);
scanf("%d",&time);
pcb4.time =time; //把时间元素赋值给结构体元素
printf(“请输入进程p5需要运行的时间:”);
scanf("%d",&time);
pcb5.time=time; //把时间元素赋值给结构体元素
pcb1.next=&pcb2;//指向下一个地址
pcb2.next=&pcb3; //指向下一个地址
pcb3.next=&pcb4; //指向下一个地址
pcb4.next=&pcb5; /指向下一个地址
pcb5.next=&pcb1; //指向下一个地址
head=&pcb1;
tail=&pcb5;
}
void printf1()//显示表头
{
printf(“±--------------|---------------|---------------|---------------+\n”);
printf("|\tpid\t|\trr\t|\ttime\t|\tSTA\t|\n");//利用制表符号打印各表的头部
printf("|---------------|---------------|---------------|---------------|\n");
}
void printf2()//显示各个进程的初始状态
{
printf(“processes p%d running\n”,head->pid);//显示打印到第几个进程的状态
printf1();
printf("|\t%d\t|\t%d\t|\t%d\t|\t%c\t|\n",head->pid,head->rr,head->time,head->sta);
printf("|---------------|---------------|---------------|---------------|\n");
rp=head;
while(rp!=tail)
{
rp=rp->next;
printf("|\t%d\t|\t%d\t|\t%d\t|\t%c\t|\n",rp->pid,rp->rr,rp->time,rp->sta);
printf("|---------------|---------------|---------------|---------------|\n");
}
}
void operation()//运行
{
int flag=1;//定义标志位
while(flag<=5)//定义while循环
{
head->rr++; //头指针进行下一位位移
if((head->rrhead->time)||(head->time0))//if语句判断如果头部位等于执行时间
{
tail->sta=‘w’;//将进程状态设置为等待态
head->sta=‘f’;//将进程状态设置为执行态
printf2();//在operation()函数内部调用print()
head=head->next;
tail->next=head;
flag++;//标志位下移
}
else
{
tail->sta=‘w’;//将进程状态设置为等待态
head->sta=‘r’;//将进程状态设置为就绪态
printf2();
tail=head;
head=head->next;
}
}
}
void main()
{
init();
printf2();
operation();
}
输出结果:
请输入进程p1需要运行的时间:5
请输入进程p2需要运行的时间:10
请输入进程p3需要运行的时间:15
请输入进程p4需要运行的时间:20
请输入进程p5需要运行的时间:25
processes p1 running
±--------------|---------------|---------------|---------------+
processes p1 running
±--------------|---------------|---------------|---------------+
processes p2 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p1 running
±--------------|---------------|---------------|---------------+
processes p2 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p1 running
±--------------|---------------|---------------|---------------+
processes p2 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p1 running
±--------------|---------------|---------------|---------------+
processes p2 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p1 running
±--------------|---------------|---------------|---------------+
processes p2 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p2 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p2 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p2 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p2 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p2 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p3 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p4 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
processes p5 running
±--------------|---------------|---------------|---------------+
Program ended with exit code: 0