亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? zuoyediaodu2.cpp

?? 數據結構課程設計
?? CPP
字號:
/**
 *THIS IS OPERATION SYSTEM WORK.
 *SECTION 2
 *@AUTHOR 郭光景
 */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define getJCB(type) (type*)malloc(sizeof(type)) //計算空間;
#define NULL 0 

//DEFINE JOB'S PROCESS STRUCT
struct jcb {
	char jobName[10];
	int sentTime;
    int neededTime;
	int resourse;
	int startTime;
	char state;
	struct jcb* link;
} *top = NULL, *p, *top2 = NULL,*running = NULL;
typedef struct jcb JCB;  //mark a type of JCB;

int choose; //選擇排序方式;

int T = 0; //系統時間;




//init FUNCTION
void init_JCB() {
	//初始化數據JCB
	JCB* temp;

	p = getJCB(JCB);
	top = p;


	strcpy(p->jobName, "job_A");
	p->sentTime = 0;
	p->neededTime = 4;
	p->resourse = 0;
    temp = p;

	p = getJCB(JCB);
	strcpy(p->jobName, "job_B");
	p->sentTime = 2;
	p->neededTime = 5;
	p->resourse = 0;
	temp->link = p;
	temp = p;

	p = getJCB(JCB);
	strcpy(p->jobName, "job_C");
	p->sentTime = 3;
	p->neededTime = 2;
	p->resourse = 0;
	temp->link = p;
	temp = p;

	p = getJCB(JCB);
	strcpy(p->jobName, "job_D");
	p->sentTime = 3;
	p->neededTime = 3;
	p->resourse = 0;
	temp->link = p;
	temp = p;

	p = getJCB(JCB);
	strcpy(p->jobName, "job_E");
	p->sentTime = 5;
	p->neededTime = 6;
	p->resourse = 0;
	temp->link = p;
	p->link = NULL;

	printf("初始化成功...\n");
}

//計算長度
int getLength(JCB* pr) {
	int length = 0;
	while(pr != NULL) {
		length ++;
		pr = pr->link;
	}
	return(length);
}

//sort function 
JCB* sort_S(JCB* waitList) {
	//
	JCB* whead;
	JCB* first;
	JCB* second;
	JCB* temp = waitList;
	//printf("duandian2\n");
	int l = getLength(waitList);
	int i, j;
    //getch();
	//printf("duandian3\n");
	whead = waitList;
	//first = waitList;
	if(whead == NULL || l == 1) {}
	else {
		//采用冒泡發

		for (i = 0; i < l; i ++) {
            first = whead;
			second = first->link;
			for (j = 0; j < (l - i - 1); j ++) {
				if ((first->neededTime) > (second->neededTime)) {

					first->link = second->link;
					second->link = first;
                    
					if(j == 0) {//當在表頭時,處理如下;
						whead = second;
						temp = whead;
						second = first->link;
						//printf("%s\n", whead->jobName);
					} else {
					    
					    temp->link = second;
					    temp = second;
				 	    second = first->link;
					}
					if (j == (l- i -2)) p = first; //控制等待列表最后的指向
				  //printf("C");
					//printf("%s\n", p->jobName);
				//	getch();
				} else {
					temp = first;
					first = second;
					second = first->link;
				}
			}
		}
	}
	return (whead);
}

float getHRN(JCB* pr) {
	float der = 0;
	if (pr != NULL) {
		der = (float)(T - (pr->sentTime) + pr->neededTime) / pr->neededTime;
	}
	return der;
}

JCB* sort_HRN(JCB* waitList) {
	//
	JCB* whead;
	JCB* first;
	JCB* second;
	JCB* temp = waitList;
	
	//printf("duandian2\n");
	int l = getLength(waitList);
	int i, j;
    //getch();
	//printf("duandian3\n");
	whead = waitList;
	//first = waitList;
	if(whead == NULL || l == 1) {}
	else {
		//采用冒泡發

		for (i = 0; i < l; i ++) {
            first = whead;
			second = first->link;
			for (j = 0; j < (l - i - 1); j ++) {
				if (getHRN(first) < getHRN(second)) {

					first->link = second->link;
					second->link = first;
                    
					if(j == 0) {//當在表頭時,處理如下;
						whead = second;
						temp = whead;
						second = first->link;
						//printf("%s\n", whead->jobName);
					} else {
					    
					    temp->link = second;
					    temp = second;
				 	    second = first->link;
					}
					if (j == (l- i -2)) p = first; //控制等待列表最后的指向
				  //printf("C");
					//printf("%s\n", p->jobName);
				//	getch();
				} else {
					temp = first;
					first = second;
					second = first->link;
				}
			}
		}
		//if(getHRN(running) < getHRN(whead)) {
			//p->link = running;
		//	p = running;
			//running->neededTime = running->neededTime - (T - running->startTime);
		//	running = whead;
			//whead = sort_HRN(whead->link);
	//	}/
	}
	return (whead);
}
//打印全部作業
void display(JCB* test) {
	int l = getLength(test);
	JCB *temp;
	if(test != NULL) {
		printf("-----------------------等待列表----------------------------\n");
		printf("作業名 \t|提交時間\t|運行時間\t|作業狀態\t|響應比\n");
		temp = test;
		while(temp != NULL) {
			printf("%8s", temp->jobName);
			printf("%8d", temp->sentTime);
			printf("%8d", temp->neededTime);
			printf("%8c", temp->state);
			printf("%8f\n", getHRN(temp));
			temp = temp->link;
		}
		printf("共%d條作業記錄\n", l);
		printf("-----------------------------------------------------------\n");
	} else {
		//printf("No JOBs!!-0-\n");
	}
}


void printGetWait(JCB* pr) {

	pr->state = 'W';
    printf("作業【%s】進入等待列表==...\n", pr->jobName);
}
void printGetReading(JCB* pr) {

    printf("當前作業【%s】正在運行...\n", pr->jobName);
}
void printGetFinish(JCB* pr) {

	pr->state = 'F';
    printf("作業【%s】已經運行結束...\n", pr->jobName);
}

//組建waitList 隊列
JCB* getWaitList(JCB* waitList) {
	JCB* wHead;

	wHead = waitList;
    while(top != NULL && top->sentTime == T) {
		if(wHead == NULL) {
			wHead = top;
			p = top;
			top = top->link;
			p->link = NULL;
		} else {
			p->link = top;
            p = top;
			top = top->link;
			p->link = NULL;
		}	
		printGetWait(p);
		//printf("%s\n", p->jobName);
		//getch();
		//display(wHead);
	}
	//getch();
	//printf("duandian1\n");
    
	//getch();
	if(choose == 2) {
		wHead = sort_S(wHead);
	} else if(choose == 3) {
        wHead = sort_HRN(wHead);
	}

	display(wHead);
	
	return (wHead);
}

//運行函數;
void runFunction() {
	JCB* waitList = NULL;
    //JCB* running = NULL;
	JCB* temp = NULL;
	//int l = getLenght(top);
	//根據sortType選擇不同的作業調度方案
    //全局變量T代表系統運行的時間,
    //系統按照T的變化而進行運行
    system("cls");
	/*初始化JCB;*/
    init_JCB();
	printf("選擇調度算法:1, 先來先服務;2,短作業優先;3,高響應比\n");
	scanf("%d", &choose);
	while(choose > 4) {
		printf("wrong!!!\n");
		scanf("%d", &choose);
	}
	/*建立臨時等待列表*/
	
	top2 = top;
	
	do {
		printf("\n==當前時刻是【 Time = %d 】========================================\n", T);
		//插入等待列表
		waitList = getWaitList(waitList);
        
        if(top != NULL && waitList == NULL && running == NULL) {
			printf("==================================================================\n\n\n");
			T ++; 
			continue;
		}
        //檢查是否有運行,沒有則到等待列表里提取;
		//有則繼續運行,并檢查是否結束
		if (running == NULL) {
			    running = waitList;
			    waitList = waitList->link;
			    running->startTime = T;
			    running->state = 'R';
				running->link = NULL;
				if (temp != NULL) temp->link = running;
			    printf("作業【 %s 】開始進入CPU運行!\n", running->jobName);
		} else {
		        if((running->neededTime + running->startTime) == T) {
	                printGetFinish(running);
					if(waitList != NULL) {
						temp = running;
						temp->link = waitList;
						running = waitList;
			            waitList = waitList->link;
			            running->startTime = T;
			            running->state = 'R';
			            printf("作業【 %s 】開始進入CPU運行!\n", running->jobName);
					} else {
						temp =running;
					    running = NULL;
					}
				} else {
			        printGetReading(running);
				}
		}
		
		
		printf("==================================================================\n\n\n");
		//getch();
		T ++;
	}while (top != NULL || waitList != NULL || running != NULL);
	printf("全部作業運行結束!\n按任意鍵查看結果...");
}

//================================================================================
int getZhouzhuang(JCB* temp) {
	int zhouzhuan;
	zhouzhuan = temp->startTime + temp->neededTime - temp->sentTime;
	return zhouzhuan;
}

float getDC(JCB* temp) {
	float dc;
	dc = (float)getZhouzhuang(temp) / temp->neededTime;
	return dc;
}

void printResult() {
	 p = top2;
	 int sum = 0;
	 float sumDC = 0;
	 system("cls");
	 while(p != NULL) {
		 printf("作業名稱     【 %s 】\n", p->jobName);
	     printf("提交時刻      %d\n", p->sentTime);
		 printf("運行時間      %d\n", p->neededTime);
		 printf("開始時刻      %d\n", p->startTime);
		 printf("完成時刻      %d\n", p->startTime + p->neededTime);
		 printf("周轉時間      %d\n", getZhouzhuang(p));
		 printf("帶權周轉時間  %0.2f\n", getDC(p));
		 printf("======================================\n");
         sum += getZhouzhuang(p);
		 sumDC += getDC(p);
		 p = p->link;
	 }
	 printf("【該組作業的平均周轉時間是:    %0.2f】\n", (float)sum / getLength(top2));
	 printf("【該組作業的平均帶權周轉時間是:%0.2f】\n", sumDC / getLength(top2));
}



void main() {
	runFunction();
	
	getch();
	//display(top2);
	//getch();
	printResult();
	getch();
}
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩不卡视频| 亚洲国产精品视频| 免费久久精品视频| 欧美亚洲综合在线| 亚洲桃色在线一区| 高清av一区二区| 久久久久97国产精华液好用吗| 亚洲国产aⅴ成人精品无吗| 99国产欧美久久久精品| 国产夜色精品一区二区av| 国产成人免费9x9x人网站视频| 欧美影视一区二区三区| 一区二区三区日韩| 91免费看片在线观看| 亚洲欧洲av在线| 成人av中文字幕| 国产精品沙发午睡系列990531| 国产一区二区三区四区在线观看| 日韩美女在线视频| 国内精品嫩模私拍在线| 久久综合999| 日本欧美韩国一区三区| 色悠久久久久综合欧美99| 日本欧美大码aⅴ在线播放| 中文字幕免费在线观看视频一区| 欧美日韩亚洲综合| 成人av在线资源网站| 午夜免费久久看| 国产精品丝袜黑色高跟| 成人黄色a**站在线观看| 国产精品视频在线看| 欧美一a一片一级一片| 天涯成人国产亚洲精品一区av| 日韩久久久精品| 成人综合在线观看| 视频一区国产视频| 中文字幕av一区二区三区高| 久久精品视频在线免费观看 | 色妹子一区二区| 男男视频亚洲欧美| 亚洲特黄一级片| 精品国产亚洲在线| 色狠狠色噜噜噜综合网| 精品系列免费在线观看| 91在线一区二区| 美国一区二区三区在线播放| 国产精品久久久久久久久久久免费看| 欧美中文一区二区三区| 色悠悠久久综合| 日韩av一二三| 欧美大片国产精品| 国产精品一区二区黑丝| 欧美国产日韩亚洲一区| 国产成人av一区二区三区在线 | 免费成人在线网站| 日韩美女视频一区| 久久这里只有精品6| 91精品国产入口| 欧美午夜精品电影| 91污片在线观看| 国产成人精品一区二区三区网站观看 | 国产精品一区二区久久不卡 | 欧美日韩精品一区二区三区| 成人精品免费网站| 国产精品一区二区三区乱码| 捆绑调教一区二区三区| 五月婷婷另类国产| 一区二区三区高清在线| 亚洲狼人国产精品| 国产精品国产a级| 国产精品久久久久婷婷| 久久久高清一区二区三区| 久久免费美女视频| 国产亚洲一区二区三区| 久久婷婷久久一区二区三区| 2欧美一区二区三区在线观看视频| 欧美午夜免费电影| 欧美精品乱人伦久久久久久| 欧美日韩高清一区二区不卡| 91精品国产综合久久久蜜臀图片 | 中文字幕一区二区三区在线播放| 337p粉嫩大胆色噜噜噜噜亚洲| 精品盗摄一区二区三区| 久久青草国产手机看片福利盒子 | 亚洲成人先锋电影| 日本vs亚洲vs韩国一区三区二区| 久久国产尿小便嘘嘘| 成人国产精品视频| 99久久免费国产| www国产亚洲精品久久麻豆| 国产日韩欧美a| 免费看黄色91| 欧美精品1区2区| 亚洲欧美另类小说视频| 国产成人aaa| 日韩你懂的在线观看| 亚洲午夜三级在线| 欧美在线啊v一区| 亚洲欧美激情一区二区| 成人av小说网| 国产精品美女一区二区三区| 国产精品中文字幕一区二区三区| 91精品国产一区二区| 婷婷六月综合网| 欧美日韩久久久久久| 亚洲成人午夜影院| 欧美区一区二区三区| 亚洲国产aⅴ成人精品无吗| 国产真实精品久久二三区| 日韩视频一区在线观看| 久久69国产一区二区蜜臀| 日韩精品在线网站| 精品一区二区三区视频在线观看| 欧美二区三区91| 91麻豆精品国产综合久久久久久| 色猫猫国产区一区二在线视频| 欧美在线视频不卡| 精品国产一二三区| 亚洲人吸女人奶水| 国产综合成人久久大片91| 色综合久久久久久久久久久| 日韩午夜在线播放| 国产精品区一区二区三区| 日日嗨av一区二区三区四区| 成人影视亚洲图片在线| 欧美一区二区三区免费| 中文字幕一区二区三中文字幕| 日本女人一区二区三区| 日本道精品一区二区三区| 国产欧美日韩激情| 蜜桃视频免费观看一区| 欧美亚洲日本国产| 国产精品日产欧美久久久久| 精品在线观看免费| 欧美人动与zoxxxx乱| 亚洲精品国产无天堂网2021| 国产一区二区三区久久久| 欧美日韩mp4| 亚洲免费在线观看视频| www.欧美.com| ㊣最新国产の精品bt伙计久久| 在线看日本不卡| 欧美一卡2卡3卡4卡| 亚洲色图欧美在线| 国产精品99久久久久久宅男| 亚洲成av人在线观看| 91国产免费观看| 国产精品国产精品国产专区不片| 另类小说视频一区二区| 欧美在线观看一区| 亚洲六月丁香色婷婷综合久久| 国产成人精品免费一区二区| 欧美一区二区三区思思人| 男女男精品视频网| 精品欧美一区二区三区精品久久| 久热成人在线视频| 日韩高清电影一区| 婷婷国产在线综合| 午夜精品一区在线观看| 久久先锋影音av| 久久婷婷一区二区三区| 久久久精品日韩欧美| 精品国产一区二区三区av性色 | 美女任你摸久久| 麻豆91在线看| 韩国av一区二区三区| 国产精品1区二区.| 午夜精品福利一区二区蜜股av | 亚洲视频一区二区免费在线观看| 欧美在线播放高清精品| 亚洲成a人v欧美综合天堂| 9191国产精品| 国产成人欧美日韩在线电影| 亚洲欧洲av色图| 69久久99精品久久久久婷婷| 狠狠色丁香九九婷婷综合五月| 国产肉丝袜一区二区| 在线观看亚洲专区| 久久av中文字幕片| 一区二区三区影院| 日韩欧美亚洲另类制服综合在线| 国产麻豆精品久久一二三| 一区二区三区在线免费播放| 日韩欧美一二三四区| 成人av集中营| 狠狠色丁香婷婷综合| 亚洲精品v日韩精品| 欧美电视剧在线观看完整版| 91在线无精精品入口| 另类中文字幕网| 一区二区三区久久| 欧美激情综合五月色丁香小说| 日韩欧美一级二级三级久久久| 91国偷自产一区二区开放时间| 91成人网在线| 日韩午夜激情av| 4438x成人网最大色成网站| 97精品国产露脸对白| 欧美性受xxxx| 91精品国产高清一区二区三区蜜臀|