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

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

?? 最佳適應算法.cpp

?? 模擬了操作系統里面的動態分配和回收內存空間的過程
?? CPP
字號:
// 首次適應算法.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"

#include <stdio.h>
#include <stdlib.h> 
#include <conio.h>
#include <string.h>

#define GetSpace(type) (type*)malloc(sizeof(type)) 

#define NULL 0
#define SIZE 0  //定義可以分割空閑塊的差值 

struct mem {
		char Name[10];
		int MemAdr;  //內存塊首地址
		int Lenth;   //塊長度
		bool State;  //0 代表是空閑塊,1 代表是已分配塊
		mem *prior;
		mem *next;
		}*Head,*Tail;

typedef struct job JOB;
typedef struct mem MEM;

void DispFreeMem(MEM *pr) /*建立進程顯示函數,用于顯示當前進程*/ 
{ 
	int i=0;
	printf("\n******************************************");
	printf("\n\n The state of free memory:");
	printf("\n Chunk Num \t FirAddress \t Lenth(K)");  //顯示空閑塊的首地址以及大小
	while(pr!=Tail)
	{
		if(pr->State==0)
		{
			printf("\n %d \t\t %d \t\t %d K",i,pr->MemAdr,pr->Lenth);
			i++;
		}
		pr=pr->next;
	}
} 

void DispNotFreeMem(MEM *pr) /*建立進程顯示函數,用于顯示當前進程*/ 
{ 
	printf("\n******************************************");
	printf("\n\n The state of not free memory:");
	printf("\n Job Name \t FirAddress \t Lenth(K)");  //顯示空閑塊的首地址以及大小
	while(pr!=Tail)
	{
		if(pr->State==1)
		{
			printf("\n %s \t\t %d \t\t %d K",pr->Name,pr->MemAdr,pr->Lenth);
		}
		pr=pr->next;
	}
	printf("\n\n******************************************");
}

void Distribute()
{
	MEM *temp,*temp2,*p=NULL;
	char Name[10];
	int Lenth;
	int min=30000;

	printf("\n Name of the job:   "); 
	scanf("%s",Name);  
	printf("\n The space of this job:(K)   ");
	scanf("%d",&Lenth);
	getchar();
	temp2=Head->next;
	while(temp2!=Tail)  //查找足夠大的空閑塊來分配
	{	
		if(temp2->State==0&&temp2->Lenth>=Lenth)
		{
			if(temp2->Lenth<min)
			{
				p=temp2;
				min=temp2->Lenth;
			}
		}
		temp2=temp2->next;
	}
	if(p==NULL)     //沒有足夠的空間分配給當前作業
	{	
		printf("\n\t\tThe free memory is not enough for this job!!\n");
		printf("\nPlease press any key to continue......\n");
		getchar();
		return; 
	}
	if(p->Lenth-Lenth>SIZE)	//空閑塊空間比所需空間大,則分裂為兩個結點
	{
		temp=GetSpace(MEM);
		strcpy(temp->Name,Name);  //添加新結點的相關參數
		temp->MemAdr=p->MemAdr;
		//printf("\n \t\t!!!! The allotted address of job %s is: %d !!!!\n",Name,temp->MemAdr);
		temp->Lenth=Lenth;
		temp->State=1;

		p->prior->next=temp;  //插入新結點
		temp->prior=p->prior;
		temp->next=p;
		p->prior=temp;

		p->MemAdr=p->MemAdr+temp->Lenth; //修改分裂后的剩余結點信息
		p->Lenth -= temp->Lenth;
	}
	else	//否則只需直接把作業填進空閑塊即可
	{
		strcpy(p->Name,Name);
		p->State=1;
	}
}

void Reclaim()
{
	MEM *temp1,*temp2,*p;
	char Name[10];
	printf("\n Name of the job:   "); 
	scanf("%s",Name);
	getchar();
	p=Head->next;
	while(p!=Tail&&strcmp(p->Name,Name)!=0)  //查找需要釋放的作業
		p=p->next;	
	if(p==Tail)
	{
		printf("\n\t\tThis job is not in the memory!!");
		printf("\nPlease press any key to continue......\n");
		getchar();
		return; 
	}
	if(p->prior->State==0&&p->next->State==0)  
	{  //將要釋放的內存塊的前后內存塊都為空閑,合并
		temp1=p;
		temp2=p->next;
		p->prior->next=temp2->next;
		temp2->next->prior=p->prior;
		p->prior->Lenth += temp1->Lenth + temp2->Lenth;
		free(temp1);
		free(temp2);
	}
	else if(p->prior->State==1&&p->next->State==0)
		{  //將要釋放的內存塊的后內存塊為空閑,合并
			temp2=p->next;
			p->next=temp2->next;
			temp2->next->prior=p;
			strcpy(p->Name,"NULL");
			p->Lenth += temp2->Lenth;
			p->State=0;
			free(temp2);
		}
	else if(p->prior->State==0&&p->next->State==1)
		{  //將要釋放的內存塊的前內存塊為空閑,合并
			temp1=p;
			p->prior->next=p->next;
			p->next->prior=p->prior;
			p->prior->Lenth += p->Lenth;
			free(temp1);
		}
	else if(p->prior->State==1&&p->next->State==1)
		{  //將要釋放的內存塊的前后內存塊都不為空閑,無需合并
			strcpy(p->Name,"NULL");
			p->State=0;
		}
}

void Choice()
{
	char CH;
	MEM *temp1,*temp2;
	temp1=Head;
	temp2=Head->next;
	while(1)
	{
		printf("\n		------------------");
		printf("\n		| 1.Apply a job  |");
		printf("\n		| 2.Cancel a job |");
		printf("\n		| 3.Exit	 |");
		printf("\n		------------------");
		printf("\n\n	Please make a choice:	");
		scanf("%c",&CH);
		switch(CH)
		{
		case '1':	Distribute();
					DispFreeMem(Head->next);   //顯示空閑鏈的狀態
					DispNotFreeMem(Head->next);//顯示作業占用內存狀況
					break;
		case '2':	Reclaim();
					DispFreeMem(Head->next);   //顯示空閑鏈的狀態
					DispNotFreeMem(Head->next);//顯示作業占用內存狀況
					break;
		case '3':	while(temp1!=NULL)
					{
						free(temp1);
						temp1=temp2;
						if(temp2!=NULL)
							temp2=temp2->next;
					}
					return;
		}
		printf("\nPlease press any key to continue......\n");
		getchar();
	}
}

void main()/*主函數*/
{
	MEM *s;
	printf("Please input the total number the memory:(K)   ");
	s=GetSpace(MEM);     //創建空閑鏈表
	scanf("%d",&s->Lenth);
	getchar();
	strcpy(s->Name,"NULL");
	s->MemAdr=0;s->State=0;
	//初始化空閑鏈的頭尾結點
	Head=GetSpace(MEM);	Tail=GetSpace(MEM);  
	Head->next=s;	Tail->next=NULL;
	s->prior=Head;	s->next=Tail;
	Tail->prior=s;
	Head->State=Tail->State=1;	
	Choice();	//進入主菜單進行相應操作	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜亚洲精品理论片色戒| 亚洲国产一区二区三区青草影视| 久久久久九九视频| 中文字幕中文字幕一区| 一区二区三区在线高清| 免费观看30秒视频久久| 成人开心网精品视频| 欧美日本在线看| 日本一区二区三区免费乱视频| 亚洲午夜成aⅴ人片| 国产福利精品导航| 4438成人网| 亚洲精品精品亚洲| 国产精品一区二区果冻传媒| 一区二区成人在线视频| 五月婷婷综合在线| 成人小视频在线| 日韩欧美www| 亚洲一区在线观看免费观看电影高清| 麻豆成人av在线| 色婷婷久久久久swag精品| 精品福利二区三区| 午夜精品久久久久久久久| 岛国精品在线播放| 欧美一区二区女人| 亚洲一级电影视频| 91在线小视频| 国产欧美精品区一区二区三区 | 欧美极品xxx| 日本强好片久久久久久aaa| 久久久一区二区三区| 日本欧美一区二区三区| av动漫一区二区| 精品国精品自拍自在线| 偷拍日韩校园综合在线| 色婷婷亚洲精品| 亚洲婷婷在线视频| 成人国产精品免费| 欧美激情在线看| 555www色欧美视频| 成人激情综合网站| 日韩你懂的在线播放| 视频一区二区三区中文字幕| 色香蕉成人二区免费| 亚洲色图丝袜美腿| 91小视频免费观看| 日韩理论电影院| 91小宝寻花一区二区三区| 亚洲国产精品精华液ab| 成熟亚洲日本毛茸茸凸凹| 国产清纯在线一区二区www| 国产一区欧美二区| 久久综合九色欧美综合狠狠| 久久69国产一区二区蜜臀| 日韩欧美国产三级电影视频| 久久99精品久久久久婷婷| 日韩女优制服丝袜电影| 国内精品视频一区二区三区八戒| 久久综合色婷婷| 成人免费黄色大片| 一区二区三区四区乱视频| 欧美日韩一区国产| 青娱乐精品在线视频| 久久综合色之久久综合| 成人h动漫精品一区二区| 亚洲欧美电影院| 欧美久久久影院| 欧美日韩视频在线一区二区| 国产精品女人毛片| 色综合久久中文综合久久97| 亚洲一区电影777| 日韩欧美综合在线| 国产成人av电影在线播放| 国产精品久久久久久久浪潮网站 | 色综合久久综合网欧美综合网| 亚洲精品福利视频网站| 欧美美女网站色| 国产麻豆视频一区| 一区二区在线观看视频| 538prom精品视频线放| 国产精品1区2区| 亚洲一级二级三级在线免费观看| 欧美一级片在线| 不卡一区在线观看| 亚洲电影一级黄| 91网站在线观看视频| 国产麻豆精品theporn| 亚洲欧洲成人精品av97| 欧美日韩一区二区三区不卡| 国产麻豆视频一区| 亚洲一区二区三区视频在线| 欧美tickling网站挠脚心| 91蜜桃免费观看视频| 蜜桃久久久久久| 一区二区三区四区国产精品| 精品国产成人在线影院| 色婷婷综合久久久中文字幕| 精品午夜一区二区三区在线观看| 亚洲精品国久久99热| 欧美精品一区男女天堂| 在线观看视频一区| 国产91在线观看丝袜| 日精品一区二区| 亚洲另类色综合网站| 国产欧美一区二区精品性| 5566中文字幕一区二区电影| 91浏览器在线视频| 国产精品小仙女| 久久精品国产99国产精品| 国产成人精品在线看| 亚洲成人久久影院| 国产精品欧美久久久久无广告| 91精品在线一区二区| 在线亚洲精品福利网址导航| 国产高清不卡二三区| 精品一区二区三区久久| 视频一区二区中文字幕| 一级做a爱片久久| 亚洲欧洲精品一区二区精品久久久| 日韩一级片网址| 欧美人狂配大交3d怪物一区| 91欧美激情一区二区三区成人| 国产 日韩 欧美大片| 狠狠色伊人亚洲综合成人| 日本欧美一区二区三区乱码| 亚洲一区二区视频在线| 一区二区三区免费在线观看| 中文字幕视频一区二区三区久| 国产日产亚洲精品系列| 久久综合久久鬼色中文字| 337p粉嫩大胆噜噜噜噜噜91av| 4438成人网| 日韩免费视频一区二区| 欧美中文字幕一区二区三区| 99精品国产99久久久久久白柏| 成人av在线电影| 丁香天五香天堂综合| 成人性生交大片免费看中文网站| 国产一区三区三区| 国产精品99久久久久久久vr| 国产精品夜夜爽| 成人免费视频视频在线观看免费| 99热99精品| 色屁屁一区二区| 欧美日韩日本视频| 日韩免费成人网| 久久夜色精品一区| 国产精品第五页| 亚洲国产一二三| 日韩国产成人精品| 国产精品99久久不卡二区| 豆国产96在线|亚洲| 在线免费观看视频一区| 欧美一区二区网站| 久久亚洲一级片| 国产精品久久国产精麻豆99网站| 亚洲三级电影网站| 高清国产一区二区| 国产成人在线免费| 972aa.com艺术欧美| 欧美日韩在线直播| 日韩女优av电影在线观看| 国产丝袜欧美中文另类| 综合久久综合久久| 日韩在线a电影| 国产91丝袜在线播放九色| 91蝌蚪porny| 日韩欧美中文一区二区| 欧美国产日本韩| 亚洲一区二区美女| 国产一二精品视频| 在线免费不卡电影| 久久众筹精品私拍模特| 一区二区三区视频在线看| 麻豆国产精品官网| 色综合天天综合| 日韩欧美一区二区久久婷婷| 欧美国产精品劲爆| 日本在线不卡视频| 99r国产精品| 欧美tickling网站挠脚心| 国产综合久久久久影院| 欧美亚日韩国产aⅴ精品中极品| 欧美亚洲日本国产| 久久久久久久久久久久电影| 亚洲一区二区三区激情| 国产精品主播直播| 制服丝袜日韩国产| 成人免费在线观看入口| 麻豆精品精品国产自在97香蕉| 一本到三区不卡视频| 久久夜色精品国产欧美乱极品| 午夜精品福利一区二区蜜股av| 成人av动漫网站| 精品国产乱码久久久久久牛牛| 亚洲欧美日韩国产综合| 国产精品自产自拍| 欧美成人女星排行榜| 亚洲第一会所有码转帖| 91美女在线观看|