广工 操作系统仿真 Best Fit最佳适应算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#define minsize 2

using namespace std;

struct Node

{

int name;

int start;

int size;

int state;

Node *pre;

Node *next;

};

typedef struct Dlinklist

{

Node *head;

}Dlist;

//===================

Dlist pro;

Dlist fre;

int memory,name,size,fit,num;

//===================

void initDlist(Dlist &L)

{

L.head=new Node;

L.head->next=L.head->pre=NULL;

}

void memoryInit()//初始化两个链表

{

initDlist(pro);

initDlist(fre);

Node *p=new Node;

p->name=0;

p->start=0;

p->state=0;

p->size=memory;

p->next=NULL;//这里曾错写成p->pre..............

p->pre=fre.head;//这里曾漏写

fre.head->next=p;

}

int getLength(Dlist &L)

{

int m=0;

Node *p=L.head->next;

while(p!=NULL)

{

m++;

p=p->next;

}

return m;

}

void arrangeSize(Dlist &L)//链表按size进行排序,从小到大

{

int length=getLength(L);

for(int i=0; i

{

Node *p=L.head->next;

Node *q=p->next;

int a,b,c;

for(int j=0; j

{

if(p->size>q->size)

{

a=p->size;

p->size=q->size;

q->size=a;

b=p->name;

p->name=q->name;

q->name=b;

c=p->start;

p->start=q->start;

q->start=c;

}

p=p->next;

q=p->next;

}

}

}

void arrangeStart(Dlist &L)//链表按startaddress进行排序,从小到大{

int length=getLength(L);

for(int i=0; i

{

Node *p=L.head->next;

Node *q=p->next;

int a,b,c;

for(int j=0; j

{

if(p->start>q->start)

{

a=p->size;

p->size=q->size;

q->size=a;

b=p->name;

p->name=q->name;

q->name=b;

c=p->start;

p->start=q->start;

q->start=c;

}

p=p->next;

q=p->next;

}

}

}

void bestfit()

{

arrangeSize(fre);

Node *s=new Node; //因为s待会要用来传递链表里的元素,所以这里要为它声明个空间

Node *q=NULL; //这里则要用NULL

Node *p=fre.head->next;

while(p!=NULL)

{

if(p->size>=size)

{

q=p;

}

p=p->next;

}

if(q==NULL)

{

cout<<" Failed to allocate memory!!"<

}

else

{

if(q->size-size<=minsize)//

{

q->pre->next=q->next;//呃,这里刚开始居然写成这样q->pre->next=p->next

if(q->next!=NULL)

q->next->pre=q->pre;

相关文档
最新文档