首次适应算法,最佳适应算法,最坏适应算法源代码(The first adaptation algorithm, the best adaptation algorithm, the worst adaptation algorithm source code).doc
- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
首次适应算法,最佳适应算法,最坏适应算法源代码(The first adaptation algorithm, the best adaptation algorithm, the worst adaptation algorithm source code)
首次适应算法,最佳适应算法,最坏适应算法源代码(The first adaptation algorithm, the best adaptation algorithm, the worst adaptation algorithm source code)
#包括 iostream。”
#包括程序。”
#定义自由0 / /空闲状态
#定义忙碌的1 /已用状态
#定义好1 / /完成
#定义错误0 / /出错
#定义max_length 640 / /最大内存空间为640kb
这是一个状态;
中断标志;
typedef struct freearea /定义一个空闲区说明表结构
{
长尺寸;/ /分区大小
长/分区地址地址;
int状态;/ /状态
} ElemType;
/ /线性表的双向链表存储结构
typedef struct dulnode
{
数据域;
结构dulnode *前;/ /前趋指针
结构dulnode *下;/ /后继指针
}
DuLNode * dulinklist;
dulinklist block_first;/ /头结点
dulinklist block_last;/ /尾结点
状态函数(int);/ /内存分配
状态自由(int);/ /内存回收
状态first_fit(int);/ /首次适应算法
状态best_fit(int);/ /最佳适应算法
状态worst_fit(int);/ /最差适应算法
show() /查看分配无效;
状态initblock();/ /开创空间表
状态initblock() /开创带头结点的内存空间链表
{
block_first =(dulinklist)malloc(sizeof(dulnode));
block_last =(dulinklist)malloc(sizeof(dulnode));
block_first -前= null;
block_first -下= block_last;
block_last -前= block_first;
block_last -下= null;
block_last -数据地址= 0;
block_last -数据大小= max_length;
block_last -数据状态=自由;
还可以;
}
/ /分配主存
状态函数(int ch)
{
int请求=0;
cout “请输入需要分配的主存大小(单位:KB):”;
请求;
如果(要求小于0 | |请求= = 0)
{
cout “分配大小不合适 endl,请重试!”;
返回错误;
}
如果(CH = = 2)/选择最佳适应算法
{
如果(best_fit(请求)= =好)cout “分配成功!” endl;
别的cout “内存不足 endl,分配失败!”;
还可以;
}
如果(CH = = 3)/选择最差适应算法
{
如果(worst_fit(请求)= =好)cout “分配成功!” endl;
别的cout “内存不足 endl,分配失败!”;
还可以;
}
其他/ /默认首次适应算法
{
如果(first_fit(请求)= =好)cout “分配成功!” endl;
别的cout “内存不足 endl,分配失败!”;
还可以;
}
}
/ /首次适应算法
状态first_fit(int请求)
{
/ /为申请作业开辟新空间且初始化
dulinklist温度=(dulinklist)malloc(sizeof(dulnode));
温度数据=大小=请求;
温度数据=状态=忙;
dulnode×P = block_first -下;
而(P)
{
如果(p = 数据,状态= =数据)。
{ //有大小恰好合适的空闲块
数据状态=忙;
还可以;
打破;
}
如果(p = 数据,状态=数据)。
{ //有空闲块能满足需求且有剩余
前值;
温度下一个;
温度- 数据。地址= P data.address;
前下;
p =前=温度;
P—数据。地址=温度-数据- data.size地址+温度;
数据=大小=请求;
还可以;
打破;
}
下一页;
}
返回错误;
}
/ /最佳适应算法
状态best_fit(int请求)
{
INT CH;/ /记录最小剩余空间
dulinklist温度=(dulinklist)malloc(sizeof(dulnode));
温度数据=大小=请求;
温度数据=状态=忙;
dulnode×P = block_first -下;
dulnode *q = null;/ /记录最佳插入位置
而(P)/初始化最小空间和最佳位置
{
如果(p = 数据)状态=(p 数据,大小=请求))
{
如果(q = NULL)
{
q = P;
您可能关注的文档
- 神剑3攻略(Excalibur 3 Raiders).doc
- 盘点2006经理人高危地带(下)(Check 2006 manager high risk area (lower)).doc
- 神武还魂狮驼孩子计划书(Smart lion camel children plan to revive).doc
- 神码分销业务将整合 与英迈交易方式定走向(Shenma distribution business will be integrated with the transaction set to Ingram).doc
- 破除迷信(Do away with all fetishes and superstitions).doc
- 离婚协议的法律效力(The legal effect of divorce agreements).doc
- 离开市场的创新没有出路(There is no way out of market innovation).doc
- 离心泵14417(Centrifugal pump 14417).doc
- 秋水(Autumn waters).doc
- 秦始皇十二铜人今何在(Qin Shihuang was now where twelve).doc
文档评论(0)