首次适应算法最佳适应算法最坏适应算法源代码宝典文档格式.docx

上传人:b****6 文档编号:16025256 上传时间:2022-11-17 格式:DOCX 页数:9 大小:16.66KB
下载 相关 举报
首次适应算法最佳适应算法最坏适应算法源代码宝典文档格式.docx_第1页
第1页 / 共9页
首次适应算法最佳适应算法最坏适应算法源代码宝典文档格式.docx_第2页
第2页 / 共9页
首次适应算法最佳适应算法最坏适应算法源代码宝典文档格式.docx_第3页
第3页 / 共9页
首次适应算法最佳适应算法最坏适应算法源代码宝典文档格式.docx_第4页
第4页 / 共9页
首次适应算法最佳适应算法最坏适应算法源代码宝典文档格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

首次适应算法最佳适应算法最坏适应算法源代码宝典文档格式.docx

《首次适应算法最佳适应算法最坏适应算法源代码宝典文档格式.docx》由会员分享,可在线阅读,更多相关《首次适应算法最佳适应算法最坏适应算法源代码宝典文档格式.docx(9页珍藏版)》请在冰豆网上搜索。

首次适应算法最佳适应算法最坏适应算法源代码宝典文档格式.docx

DuLNode,*DuLinkList;

DuLinkListblock_first;

//头结点DuLinkListblock_last;

//尾结点

Statusalloc(int);

//内存分配Statusfree(int);

//内存回收

StatusFirst_fit(int);

//首次适应算法

StatusBest_fit(int);

//最佳适应算法StatusWorst_fit(int);

//最差适应算法

voidshow();

//查看分配

StatusInitblockO;

//开创空间表

StatusInitblock()//开创带头结点的内存空间链表

block_first=(DuLinkList)malloc(sizeof(DuLNode));

block_last=(DuLinkList)malloc(sizeof(DuLNode));

block_first~>

prior=NULL;

blockfirst-〉next二blocklast;

block_last->

prior=block_first;

block_last->

next=NULL;

data・address=0;

data・size二MAX_length;

block_last~>

data・state=Free;

returnOK;

}

〃分配主存

Statusalloc(intch)

intrequest=0;

cout«

,z请输入需要分配的主存大小(单位:

KB):

〃;

cin»

request;

if(request<

0request==0)

z,分配大小不合适,请重试〜,z«

endl;

returnERROR;

if(ch-2)〃选择最佳适应算法

if(Best_fit(request)~0K)cout«

,/分配成功〜,z«

elsecout«

,?

内存不足,分配失败〜"

«

if(ch-3)//选择最差适应算法

if(Worst_fit(request)~0K)cout«

z,分配成功〜,,«

elsecout«

,/内存不足,分配失败〜,,«

else〃默认首次适应算法

if(First_fit(request)—OK)cout«

,z分配成功〜,,«

StatusFirst_fit(intrequest)

〃为申请作业开辟新空间且初始化

DuLinkListtemp=(DuLinkList)malloc(sizeof(DuLNode));

temp-〉data・size二request;

temp-〉data・state二Busy;

DuLNode*p=block_first->

next:

while(p)

if(p->

data・state二二Free&

&

p->

data・size二二request)

{//有大小恰好合适的空闲块

p->

data.state二Busy;

break;

data・size>

request)

{〃有空闲块能满足需求且有剩余

temp->

prior=p->

prior;

next=p;

data・address=p->

data・address;

prior->

next=temp;

prior=temp;

data.address=temp->

data・address+temp->

data・size;

data.size-二request;

p=p->

next;

returnERROR:

//最佳适应算法

StatusBest_fit(intrequest)

intch;

〃记录最小剩余空间

data・size二request;

data・state=Busy;

DuLNode*q=NULL;

〃记录最佳插入位置while(p)//初始化最小空间和最佳位置

(p->

data・size〉二request))

辻(q二二NULL)

q二P;

ch=p->

data・size-request;

elseif(q->

data.size>

data.size)

//最差适应算法

StatusWorst_fit(intrequest)

//记录最大剩余空间

temp-〉data・state=Busy;

LNode*p=block_first->

Du

//记录最佳插入位置

while(p)//初始化最大空间和最佳位置

data.size<

辻(q二二NULL)returnERROR;

//没有找到空闲块

elseif(q->

data・size=request)

q->

data・state二Busy;

else

temp->

prior=q->

next=q;

data・address=q->

next=temp;

data・address+二request;

data・size=ch;

〃主存回收

Statusfree(intflag)

DuLNode*p=block_first;

for(inti=0;

i<

=flag;

i++)

辻(p!

二NULL)

data・state二Free;

prior!

=block_first&

prior->

data.state—Free)//与前面的空闲块相连

data・size+=p->

next=p->

next~>

prior;

next!

=block_last&

next->

data・state==Free)//

与后面的空闲块相连

data.size+=p->

prior=p;

辻(p->

next==block_last&

data.state二二Free)//与最后的空闲块相连

next二NULL;

〃显示主存分配情况

voidshow()

intflag=0;

,z\n主存分配情况:

\n"

;

cout〈〈"

++++++++++++++++++++++++++++++++++++++++++++++\n\rT;

,z分区号\t起始地址\t分区大小\t状态\n\n"

while(p)

,/"

<

〈flag++«

"

\t"

,/,,«

p~>

data.address«

,,\t\t,/;

data.size«

KB\t\t"

if(p->

data・state==Free)cout〈〈〃空闲\n\n"

,z已分配\n\n"

++++++++++++++++++++++++++++++++++++++++++++++\n\n"

//主函数

voidmain()

//算法选择标记

〃请输入所使用的内存分配算法:

\rT;

cout<

C(l)首次适应算法\n

(2)最佳适应算法\n(3)最差适应算法\n〃;

cin»

ch;

while(ch<

lIch>

3)

,z输入错误,请重新输入所使用的内存分配算法:

\n〃;

InitblockO:

//开创空间表

intchoice;

//操作选择标记

while

(1)

show();

〃请输入您的操作:

〃;

,,\nl:

分配内存\n2:

回收内存\n0:

退出\n"

choice;

if(choice=l)alloc(ch);

//分配内存

elseif(choice=2)//内存回收

zz请输入您

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1