文档介绍:#include<>
#include<>
#include<>
#include<>
//采用最佳适应算法来实现可变分区的管理
//数据结构的设计
typedef struct node
{
char name[10];//作业的名字
int start, length;//作业的起始地址和长度
struct node *next;//链表结构体
}*table;
//为合并空闲区表而临时增加的一个数据结构
//将空闲表中的数据项都存在这个结构的数组中
//然对这个数组进行排序,最后得到从小到大的空闲区表
struct pnode
{
int start,length;//起始地址和长度
};
int menu()//选择菜单
{
int n;
for(; ;)
{
printf(" ________________________\n");
printf("****************|最佳适应算法进行可变分区|***************\n");
printf("*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*\n");
printf("* 1输入作业数及大小(单位KB) *\n");
printf("* 2查看内存使用情况*\n");
printf("* 3释放内存*\n");
printf("* 4查看空闲区表的情况*\n");
printf("* 5退出程序*\n");
printf("*|*|*|*|*|*|*|*|*|请输入您的选择*|*|*|*|*|*|*|*|*|*|*|*|*\n");
scanf("%d",&n);
while(n < 1 || n > 5)
{
printf("输入有误请重新输入\n");
scanf("%d",&n);
}
return n;
}
}
//要建立两张表,一张是进程占用分区状况表,一张是空闲区表
table p;//占用表
table f;//空闲表
void init()//两张表的初始化
{
p=(table)malloc (sizeof(struct node));//头结点
p->next=NULL;//初始化是,占用表为空
f=(table)malloc (sizeof(struct node));//头结点
table f1=(table)malloc (sizeof(struct node));//初始定义为1K的内存,有一个空闲空间
f1->start=0;
f1->length=1024;//定义内存为1k;
f1->next=NULL;
f->next=f1;//将f1插入表空闲中
}
//输出内存使用表
void printfUse()
{
table p1=p->next;//将使用表的所有内容显示出来
printf("作业名起始地址长度\n");
while(p1!=NULL)
{
printf("%s ",p1->name);
p