时间片轮转法
没有队列、节点
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct PCB //PCB数据结构
{
int name;
struct PCB* next; //链接指针
int arrival; //到达时间
int remaining; //剩余时间
char signal; //状态信号
int gantt[1000]; //记录甘特图横线位置
}InitList[100];
struct PCB* curr = NULL; //当前运行程序指针
struct PCB* first = NULL; //首址
struct PCB* last = NULL; //为了简便计算,加了尾址,减少计算负担
int Time = -1
; //时间
int Traversal; //遍历用的变量
int num = 5; //进程数
int num2; //备用进程数
int Flow = 0; //流向图判断变量
init() {
//初始化
printf("____________________初始化程序___________________________\n\n");
printf("是否输出循环图(需要递归,可能会消耗更多资源):");
scanf("%d", &Flow);
MeiKaiErDu:
printf("自动生成数据(1);手动生成数据(2);使用测试数据(3):");
int flag; //判断指标
scanf("%d", &flag);
switch (flag)
{
case 1: //自动生成数据
printf("请输入进程数:");
scanf("%d", &num); //输入进程数
num2 = num; //初始化备用进程数
srand((unsigned)time(NULL));
for (int i = 0; i < num2; i++) {
input(i, rand() % num2, (rand() % (num2 - 1) + 1));
}
break;
case 2: //手动输入数据
printf("请输入进程数:");
scanf("%d"