文档介绍:#include<> #define getpch(type) (type*)malloc(sizeof(type))
struct LNode
( int size;
int start;
int end;
str > p->size)
{
p=p->next;
t=t->next;
if(!p)
{
printf("没有足够大的空闲区分配!分配不成功,
}
}
else
{
p->size = p->size - size;
p->start= p->start + size ;
if(p->size==0)
{
t->next = p->next ;
p->next->front=t;
n--;
free(p);
}
printf(”分配成功! \n");
printf(”分配后的空闲链表情况如下:\n");
PrintList();
break;
}
}
}// end of FF_Assign
int flag=-1;
void NF_Assign(int size)/*循环首次适应算法的分配*/
{
LN *p,*t;
int i=n;
p=find->next;
t=find;
while(p)
{
if(size > p->size)
{
p=p->next;
t=t->next;
if(!p)
{
printf("没有足够大的空闲区分配!分配不成功,
}
}
else
{
p->size = p->size - size;
p->start= p->start + size ;
find=p;
if(p->size==0)
{
t->next = p->next;
p->next->front=t;
n--;
free(p);
}
printf(”分配成功! \n");
flag=1;
printf(”分配后的空闲链表情况如下:\n");
Print(L);
break;
}
}
if(flag==-1)
{ p=L->next;
t=L;
while(p!=find)
{
if(size > p->size)
{
p=p->next;
t=t->next;
if(!p)
{
printf("没有足够大的空闲区分配!分配不成功,
}
else
{
p->size = p->size - size;
p->start= p->start + size ;
find=t;
if(p->size==0)
{
t->next = p->next ;
p->next->front=t;
n--;
free(p);
}
printf(”分配成功! \n");
printf(”分配后的空闲链表情况如下:”); PrintList(L);
break;
}
}
}
}// end of NF_Assign
void Recover(int start, int end) /* 回收 */
{
LN *p,*t;
int size,flag=0;
size=end-start;
p=L->next;
t=p->next;
w