弄一个关于作文的网站怎么做,网站开发的工资是多少,怎么简单攻击一个网站,广东上海专业网站建设公司排名5073. 空闲块 - AcWing题库 数组模拟循环链表
/*从当前位置开始遍历空闲块链表#xff08;初始是从地址最小的第一个空闲块开始#xff09;#xff0c;寻找满足条件的最小块
#xff08;即#xff1a;大于等于请求空间的最小空闲块#xff0c;如果有多个大小相同的最小空…5073. 空闲块 - AcWing题库 数组模拟循环链表
/*从当前位置开始遍历空闲块链表初始是从地址最小的第一个空闲块开始寻找满足条件的最小块
即大于等于请求空间的最小空闲块如果有多个大小相同的最小空闲块则选择遍历遇到的第一个最小空闲块
最佳适应原则
如果选择的空闲块恰好与请求的大小相符合则将它从链表中移除并返回给用户
这时当前位置变为移除的空闲块指向的下一空闲块
如果选择的空闲块大于所申请的空间大小则将大小合适的空闲块返回给用户
剩下的部分留在空闲块链表中这时当前位置仍然为该空闲块
如果找不到足够大的空闲块则申请失败这时当前位置不变。*/
#includeiostream
#includecstring
using namespace std;
const int N 110,MAX_1e9 10;
int num[N],sz[N];int n;int main(){int req;scanf(%d,n);for(int i 1; i n; i){scanf(%d%d,num[i],sz[i]);}//数组模拟判别为空sz和是0int pt1;while(scanf(%d,req),req!-1){//找min和min_iint min_MAX_,min_i;for(int i pt; i n; i){if(!sz[i])continue;//跳过空节点if(sz[i] req sz[i]min_){min_sz[i],min_ii;}}for(int i 1; i pt; i){if(!sz[i])continue;//跳过空节点if(sz[i] req sz[i]min_){min_sz[i],min_ii;}}//min_和min_i如果min_大于if(min_MAX_)continue;else {//更新节点并更新ptif(reqsz[min_i]){sz[min_i]0;ptmin_i1;//下一个if(ptn1){pt1;while(sz[pt]0)pt;}}else if(reqsz[min_i]){sz[min_i]sz[min_i]-req;ptmin_i;}}}for(int i pt; i n; i){if(!sz[i])continue;//跳过空节点printf(%d %d\n,num[i],sz[i]);}for(int i 1; i pt; i){if(!sz[i])continue;//跳过空节点printf(%d %d\n,num[i],sz[i]);}return 0;
}