⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 最佳适应动态分区存储管理器模拟 最佳适应动态分区存储管理器模拟
💻 CPP
字号:
#include "Node.h"
#include "dis.h"
#include "iostream.h"
#include "stdio.h"
#include "stdlib.h"

Node Run[12];       //作业
int position=0;     //作业个数
int S1[12]={2,4,6,8,10,15,20,25,30,50,80,150};  //存储器空间

void Compositor (int k)      //调入作业后排序
{
	int i=0,p;
	while (S1[i]<S1[k])
		i++;
	for (;i!=k;k--)
	{
		p=S1[k];
		S1[k]=S1[k-1];
		S1[k-1]=p;
	}
}

void Taxis (int k)          //释放空间后排序
{
	int j=1,i,p;
	S1[0]=S1[0]+k;
	do
	j++;
	while (S1[j]<S1[0]&&j<11);
	for (i=0;i!=j;i++)
	{
		p=S1[i];
		S1[i]=S1[i+1];
		S1[i+1]=p;
	}
}

int Turn (int k)
{
	Node p;
	if (k==position)
		return 1;
	for (;k!=position;k++)
	{
		p=Run[k];
		Run[k]=Run[k+1];
		Run[k+1]=p;
	}
	return 1;
}



void Delete ()     //调出作业
{
	int i,k=0;
	char na[20];
	cout<<endl<<"请输入已完成的作业名称:";
	cin>>na;
	for (i=0;i<=position;i++)
		if (strcmp(Run[i].Getname(),na)==0)
		{
			k=Run[i].Free();       //释放结点返回存储空间大小
			Turn (i);
			position--;
		}
	if (k==0)
	{
		cout<<"没有该作业!!按回车键返回!!"<<endl;
		getchar ();
	}
	else
		Taxis (k);
}

int Inputt ()       //调入进程
{
	int s,i=0;
	char na[20];
	cout<<endl<<"请输入作业名称:";
	cin>>na;
	if (position!=0)
		for (i=0;i<position;i++)
			if (strcmp(Run[i].Getname(),na)==0)
			{
				cout<<"已有同名作业存在,按回车键返回!!"<<endl;
				getchar ();
				return 0;
			}
	cout<<"请输入作业大小:";
	cin>>s;
	if (s>S1[11])
	{
		cout<<"作业太大,没有足够空间,按回车键返回!!"<<endl;
		getchar ();
		return 0;
	}
	Node p(s,na);
	Run[position]=p;
	position++;	
	while (S1[i]<s)
		i++;
	S1[i]=S1[i]-s;
	if (i!=1)
		Compositor (i);
	return 1;
}


int Displaylink ()      //输出全部运行中的作业
{
	int i;
	if (position==0)
	{
		cout<<endl<<endl<<"暂时没有运行作业!!按回车键返回"<<endl;
		return 0;
	}
	for (i=0;i<position;i++)
	{
		cout<<endl<<"第"<<i+1<<"个作业:"<<endl;
		cout<<"作业名:   "<<Run[i].Getname()<<endl;
		cout<<"作业大小: "<<Run[i].Getspace()<<endl;
	}
	cout<<endl<<"按回车键返回"<<endl;
	return 1;
}

void Displayfree ()      //输入全部剩余存储器空
{
	int i,sum=0;
	cout<<endl<<"剩余存储器空间为:"<<endl<<"   ";
	for (i=0;i<11;i++)
	{
		cout<<S1[i]<<"->";
		sum=S1[i]+sum;
	}
	cout<<S1[11];sum=sum+S1[11];
	cout<<endl<<"共有存储空间:"<<sum;
	cout<<endl<<endl<<"按回车键返回"<<endl;
}


void Control ()     //控制函数
{
	int i=0;
	i=Display ();
	switch (i)
	{
		case 0:
			cout<<endl;
			exit (0);
		case 1:
			Inputt ();
			Control ();
		case 2:
			Delete ();
			Control ();
			break;
		case 3:
			Displaylink ();
			getchar ();
			Control ();
		case 4:
			Displayfree ();
			getchar ();
			Control ();
			break;
		default:
			cout<<"输入错误!!请重新输入!!按回车键返回"<<endl;
			getchar ();
			Control ();
	}
}


void main ()
{
	Control ();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -