首次适应算法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
首次适应算法

程序: #include iostream #include stdlib.h using namespace std; struct memory { struct memory *former; //前向指针 int address;//地址 int num;//作业号 int size;//分配内存大小 int state;//状态0表示空闲1表示已分配 struct memory *next; //后向指针 }; typedef struct memory MEMORY; MEMORY *mem; const int size_min=10;//内存允许的最小空闲块的大小 bool is_optimist;//判断是否是最佳适应算法 void init(); //初始化内存块 void exec();//执行相应算法 void F_F(int); //依次初始化每个作业,并根据相应算法对作业分配内存 void alloc(MEMORY *,MEMORY *);//分配内存算法(包括两种不同算法) void free(MEMORY *,int);//首次适应算法回收内存 void free_optimist(MEMORY *,int); //最佳适应算法回收内存 void sort(MEMORY *);//对内存链进行排序 void insert(MEMORY *,MEMORY *); //按空间大小将作业顺序插入到内存链 void print(MEMORY *);//打印内存链 void main() { //主函数 int i=0; while(1) { //选择算法 cout(\nPlease select a number(1,2,0)); cout(\n 1--首次适应算法); cout\n 2--最佳适应算法endl; cout 0--中止程序endl; cini; if(i==1) { //首次适应算法 cout(\n以下为首次适应算法:\n); is_optimist=false; init();exec(); } if(i==2) {//最佳适应算法 cout\n以下为最佳适应算法:\n; is_optimist=true; init(); exec(); } else if(i==0) { exit(1); } } } void init() { //初始化内存容量 mem=new MEMORY; mem-size=640; mem-former=0; mem-next=0; } void exec() {//执行算法 while(1) {//选择申请或释放内存操作 cout**************************endl; cout申请内存请输入作业号(1-7)endl; cout释放内存请输入数字8endl; cout中止程序请输入数字0endl; cout**************************endl; int k;cink; //根据k值选择相应的操作 if(k=1k=7) F_F(k); if(k==8) {int m; cout请输入要释放的作业号:; cinm; //选择相应的回收算法 if(is_optimist==false) free(mem,m); else free_optimist(mem,m); } else if(k==0) {//回滚到选择算法的步骤 break;}}} void F_F(int i) { //依次初始化每个作业,并根据相应算法对作业分配内存 int work[]={0,130,60,100,200,140,60,50};//作业序列,i从1开始(与作业号对应),因此从第一个开始存放作业值,第0个值为0,不是作业 MEMORY *running; running=(MEMORY *)malloc(sizeof(MEMORY)); if(running!=NULL) { running-former=NULL; running-address=0; running-num=i; //i从1开始循环 running-size=work[i]; //指定作业大小 running-state=0; //作业未

文档评论(0)

sh4125733 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档