p3->size=m->size;
p3->address=m->address; if((p3->address-p1->address)==(p1->size))
p1->size=p1->size+p3->size;
}
else
{
p1->next=p3; p3->next=NULL;
}
}
}
return(head);
void print(struct idle *h1,struct allocate *h2)
{
struct idle *m1; struct allocate *n1; m1=h1; n1=h2; if(m1==NULL)
{
printf(\空闲表为空 !\\n\
}
else
{
while(m1!=NULL)
{
printf(” 空闲单元地址为 %d,其大小为 %d\\n\
}
}
if(n1==NULL)
{
printf(\已分配表为空 !\\n\
}
else
{
while(n1!=NULL)
{
printf(\已 分 配 单 元 地 址 为 %d, 其 大 小 为 %d, 其 名 称 为 %d\\n ”,
n1->address ,n 1->size ,n1->n ame);
n1=n1->next;
}
}
}
void FF(void)
struct idle *p1; struct allocate *p2; struct job *p,*q; int y=1; int n=0; int a=1;
int c; p1=creatidle(); p2=creatallocate(); printf(\初始情况为 :\\n\while(a==y) {
printf(\请输入要进行的操作 :1.建立作业 2.删除作业 3.结束操作 \\n\switch(c)
{
case 1: p=creatjob(); p1=init1(p1,p); p2=reallocate(p2,p); print(p1,p2);break; case 2: q=delejob(p2); p2=del(p2,q); //p2=reallocate(p2,q); p1=unite(q,p1);
print(p1,p2);break; case 3: y=0;break;
}
}
}
void BF(void)
{
struct idle *p1; struct allocate *p2; struct job *p,*q; int y=1; int n=0; int a=1;
int c; p1=creatidle(); p2=creatallocate(); printf(\初始情况为 :\\n\while(a==y)
{
printf(\请输入要进行的操作 :1.建立作业 2.删除作业 3.结束操作 \\n\switch(c)
{
case 1: p=creatjob(); p1=init2(p1,p); p2=reallocate(p2,p); print(p1,p2);break; case 2: q=delejob(p2); p2=del(p2,q); //p2=reallocate(p2,q); p1=unite(q,p1);
print(p1,p2);break; case 3: y=0;break;
}
}
}
void WF(void)
{
struct idle *p1; struct allocate *p2; struct job *p,*q;
int y=1; int n=0; int a=1;
int c; p1=creatidle(); p2=creatallocate(); printf(\初始情况为 :\\n\while(a==y)
{
printf(\请输入要进行的操作 :1.建立作业 2.删除作业 3.结束操作 \\n\switch(c)
{
case 1: p=creatjob(); p1=init3(p1,p); p2=reallocate(p2,p); print(p1,p2);break; case
2:
q=delejob(p2);
p2=del(p2,q);
//p2=reallocate(p2,q);
p1=unite(q,p1);
print(p1,p2);break; case 3: y=0;break;
}
}
}
运行结果如下
1.首次适应算法建立作业
SI \ents and Settincs\\hp\\^面\\cu存備器分配与回CTXDeliucX^W. eze 掘闲軍元地址为1 .其大小为[盹 己分 配表为空! 青输入要进行的操作[建立作业 靑输入要运行的作业的名称与大/Z L 2Q 壬闲单元地址为如耳古小为師 己分配单元ite址为大小为仇其名称为丄 靑轴入要进行的操作:「建立作业农删除作业札结東操作 40 匕卜为翎
木小为20, 称为1 t大小为祁魚名称癌 ?建止作业2?删篠作业3?结東操作 输入要删除的作业的名称 LRLJ 元H£ 勺元」X 单61其 为个 0^忙 肖p 要为?」-40fsllik丸结束操作 操命 大立/'L_■ 2.最优适应算法建立作业
存储器的分配与回收算法实现



