#include "stdafx.h"
#include<fstream.h>
#include<malloc.h>
#include<string.h>
#include<iomanip.h>
#include "stdio.h"
#define getjcb(type) (type*)malloc(sizeof(type))
#define NULL 0
int n=0; //作业个数
int time=0;
float eti; //平均周转时间
float ewi; //带权平均周转时间
typedef struct jcb{
char name[10]; /* 作业名 */
char state; /* 作业状态 */
int ts; /* 提交时间 */
float super; /* 优先权 */
int tb; /* 开始运行时间 */
int tc; /* 完成时间 */
float ti; /* 周转时间 */
float wi; /* 带权周转时间 */
int ntime; /* 作业所需运行时间 */
char resource[10]; /* 所需资源 */
struct jcb *next; /* 结构体指针 */
} JCB;
JCB *p,*tail=NULL,*head=NULL;
/*初始化作业队列,动态生成n个JCB结点并分别赋值*/
void inital(){
char na[10];
int ts1;
int ntime1;
char resoure1[10];
cout<<"Input jcb num: ";
cin>>n;
cin.ignore ();
cout<<"Input"<<endl;
cout<<"name ts ntime resource ";
for(int i=0;i<n;i++){
p=getjcb(JCB);
cin>>na>>ts1>>ntime1>>resoure1;
cin.ignore ();
strcpy(p->name,na);
p->ts=ts1;
p->ntime=ntime1;
strcpy(p->resource,resoure1);
p->state='W';
p->next=NULL;
if(head==NULL)
head=tail=p; //队列为空则将新结点作为队列的第一结点
else{ //队列不空则将新结点插入到队列尾部
tail->next=p;
tail=p;
}
}
}
/*从文件中读取初始数据*/
void fileinput(){
int i;
ifstream ifile("os2.txt",ios::in|ios::out);//打开文件
if(!ifile){ //读取文件失败