预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include<stdio.h>#include<stdlib.h>#defineFF0#defineBF1typedefstructJCB//作业结构体{intads;intsize;intid;structJCB*next;}JCB,*JCBStr;typedefstruct{JCBStrfront;JCBStrend;}Link;LinkReady,Free;//已分配和未分配队列intType;//内存分配操作intSize;//内存总大小intFit;//内存分配方法intadress;//临时地址voidbuild(JCBStr&q)//创建空链节{q=(JCBStr)malloc(sizeof(JCB));q->next=NULL;}voidcreate(JCBStr&q,intid)//创建一个JCB{build(q);q->id=id;q->size=Size;q->ads=adress;}voidInit()//队列初始化{build(Ready.front);Ready.end=Ready.front;build(Free.front);Free.end=Free.front;JCBStrq;create(q,0);Free.front->next=q;Free.end=q;q->ads=0;}voidlookFree(JCBStr&q)//查看空闲队列{JCBStrs,t;s=Free.front;t=Free.front->next;while(t){if(t->size>=Size){adress=t->ads;break;}s=t;t=t->next;}q=t;if(t&&Fit==BF){s->next=t->next;if(t==Free.end)Free.end=s;}}voidlookReady(JCBStr&q,intid)//查看并取出链节{JCBStrs;s=Ready.front;q=Ready.front->next;while(q){if(q->id==id)break;s=q;q=q->next;}if(!q)return;q->id=0;s->next=q->next;if(q==Ready.end)Ready.end=s;}voidinsertReadyLink(JCBStr&q)//插入分配队列{Ready.end->next=q;Ready.end=q;}voidInsertFreeBF(JCBStr&q)//根据内存空间排序插入{JCBStrs,t;t=Free.front;s=Free.front->next;while(s){if(s->size<=q->size){t=s;s=s->next;}else{break;}}t->next=q;q->next=s;if(t==Free.end)Free.end=q;}voidInsertFreeFF(JCBStr&q)//根据内存地址排序插入{JCBStrs,t;t=Free.front;s=Free.front->next;while(s){if(s->ads<q->ads){t=s;s=s->next;}else{break;}}t->next=q;q->next=s;if(t==Free.end)Free.end=q;}voidhebinFF(JCBStr&q,JCBStr&node,inttype)//快速回收查找方法{JCBStrs,t;s=Free.front;t=s->next;switch(type){case0:while(t){if(t->ads+t->size<q->ads){s=t;t=t->next;}elseif(t->ads+t->size==q->ads){node=t;s->next=t->next;if(t==Free.end)Free.end=s;break;