#include#includetypedefstructstorage
{intname;intsize;intstartaddress;int stuta;//0表示空闲;1表示已分配
storage*next;
storage*front;
}storage;//初始化
void initialize(storage *s,intname){
s->name=name;
s->size=0;
s->startaddress=0;
s->stuta=0;
s->front=NULL;
s->next=NULL;
}//判断是否可以分配0表示不能分配,1表示可以分配
int IFallocation(storage *s,intSize)
{
storage*p;while (s!=NULL)
{
p=s->next;if(s->stuta==0 && s->size>Size)//空闲而且存在 够分的情况
{return 1;
}
s=p;
}
printf("不允许分配\n");return 0;
}//分配
void allocation(storage* head,int name,intsize)
{//找最佳位置//创建两个指针 一个扫描移动 一个记录最佳//假设头指针就是最佳插入位置//扫描 先看是不是空闲区 在看能不能分配 在看是不是最佳位置
storage *h,*p