


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、#defi ne OK 1/ 完成#defi ne ERROR 0 / 出錯typedef int Status;typedef struct free_table定義一個空閑區(qū)說明表結(jié)構(gòu)long address; /long len gth; / int state; /ElemType;typedef struct Node/ElemType data;struct Node *prior; /struct Node *n ext; / Node,*Li nkList;Lin kList first; /int num; / 分區(qū)序號起始地址分區(qū)大小分區(qū)狀態(tài)線性表的雙向鏈表存儲結(jié)構(gòu)前趨指針
2、后繼指針頭結(jié)點(diǎn)Lin kList e nd; / 尾結(jié)點(diǎn)int flag;/記錄要刪除的分區(qū)序號Status In itblock()幵創(chuàng)帶頭結(jié)點(diǎn)的內(nèi)存空間鏈表first=(Li nkList)malloc(sizeof(Node);en d=(Li nkList)malloc(sizeof(Node);first-prior二NULL;first- n ext=e nd;en d-prior二first;end-n ext=NULL;en d-data .num=1;en d-data.address=40;en d-dataen gth=600;en d-data.state=0;retu
3、rn OK;void sort()分區(qū)序號重新排序Node *p=first- n ext,*q;q=p-n ext;for(;p!=NULL;p=p-n ext)for(q=p-n ext;q;q=q-n ext)if(p-data .num =q-data .num)q-data .nu m+=1;/顯示主存分配情況void show() int flag=O;用來記錄分區(qū)序號Node *p=first;p-data .num=0;p-data.address=O;p-dataen gth=4O;p-data.state=1;sort();prin tf(ntt?主存空間分配情況?n);p
4、rintf(nn);printf分區(qū)序號t起始地址t分區(qū)大小t分區(qū)狀態(tài)nn;while(p)prin tf(%dtt%dtt%d,p-data .nu m,p-data.address,p-dataen gth); if(p-data.state=0) pr in tf(tt空閑 nn);else prin tf(tt已分配 nn);p=p-n ext;printf(H*nn);/首次適應(yīng)算法Status First_fit(i nt request) /為申請作業(yè)幵辟新空間且初始化Node *p=first- n ext;Lin kList temp=(Li nkList)malloc(si
5、zeof(Node);temp-dataen gth二request;temp-data.state=1;p-data .num=1;while(p)if(p-data.state=0)&(p-data.le ngth=request)/有大小恰好適宜的空閑塊p-data.state=1;return OK;break;else if(p-data.state=0) & (p-data.le ngthrequest)/有空閑塊能滿足需求且有剩余temp-prior=p-prior;temp-n ext二p;temp-data.address二p-data.address;temp-data.
6、num 二p-data. num;p-prior- n ext二temp;p-prior=temp;p-data.address=temp-data.address+temp-dataen gth;p-dataen gth-二request;p-data .nu m+=1;return OK;break;p=p-n ext;return ERROR;/最正確適應(yīng)算法Status Best_fit(i nt request)int ch; /記錄最小剩余空間Node *p=first;Node *q=NULL; /記錄最正確插入位置Lin kList temp=(Li nkList)malloc
7、(sizeof(Node);temp-dataen gth=request;temp-data.state=1;p-data .num=1;while(p) /初始化最小空間和最正確位置if(p-data.state=0) & (p-data.le ngth=request)if(q=NULL)q=p;ch=p-dataen gth-request;else if(q-dataen gth p-dataen gth)q=p;ch=p-dataen gth-request;p=p-n ext;if(q=NULL) return ERROR;/沒有找到空閑塊else if(q-dataen gth
8、=request)q-data.state=1;return OK;elsetemp-prior二q-prior;temp-n ext=q;temp-data.address二q-data.address;temp-data. num 二q-data. num; q-prior- n ext二temp;q-prior=temp;q-data.address+二request;q-dataen gth=ch;q-data .nu m+=1;return OK;return OK;/最差適應(yīng)算法Status Worst_fit( int request)int ch; /記錄最大剩余空間Node
9、*p=first- n ext;Node *q=NULL; /記錄最正確插入位置Lin kList temp=(Li nkList)malloc(sizeof(Node);temp-dataen gth二request;temp-data.state=1;p-data .num=1;while(p) /初始化最大空間和最正確位置if(p-data.state=0 & (p-data.le ngth=request)if(q=NULL)q=p;ch=p-dataen gth-request;else if(q-dataen gth dataen gth)q=p;ch=p-dataen gth-r
10、equest;p=p-n ext;if(q=NULL) return ERROR;/沒有找到空閑塊else if(q-dataen gth=request)q-dataen gth=1;return OK;elsetemp-prior二q-prior;temp-n ext=q;temp-data.address=q-data.address; temp-data. num 二q-data. num;q-prior- n ext二temp;q-prior=temp;q-data.address+二request;q-dataen gth=ch;q-data .nu m+=1;return OK;
11、return OK;/分配主存Status allocatio n(i nt a)prin tf(請輸入申請分配的主存大小(單位:KB):);sea nf(%d,&request);if(requestn ext)if(q=p)if(q-prior-data.state=0&q-n ext-data.state!=O)q-prior-data.le ngth+二q-datae ngth;q-prior- n ext=q-n ext;q- next-prior二q-prior;q=q-prior;q-data.state=0;q-data .num 二flag-1;if(q-prior-data
12、.state!=0&q-n ext-data.state=0)q-dataen gth+=q-n ext-dataen gth;q-n ext=q-n ext- n ext;q-n ext- n ext-prior二q;q-data.state=O;q-data .num 二flag;if(q-prior-data.state=0&q-n ext-data.state=O)q-prior-data.le ngth+二q-data.le ngth;q-prior- n ext=q-n ext;q- next-prior二q-prior;q=q-prior;q-data.state=0;q-dat
13、a .num 二flag-1;if(q-prior-data.state!=0&q-n ext-data.state!=0)q-data.state=0;return OK;Status deal2(Node *p)處理回收空間Node *q=first;for(;q!二NULL;q=q-n ext)if(q=p)if(q-prior-data.state=0&q-n ext-data.state!=O)q-prior-datae ngth+二q-datae ngth;q-prior- n ext=q-n ext;q- next-prior二q-prior;q=p-prior;q-data.s
14、tate=0;q-data .num 二flag-1;if(q-prior-data.state!=0&q-n ext-data.state=0)q-data.state=0;if(q-prior-data.state=0&q-n ext-data.state=0)q-prior-data.le ngth+二q-data.le ngth;q-prior- n ext=q-n ext;q- next-prior二q-prior;q=q-prior;q-data.state=O;q-data .num 二flag-1;if(q-prior-data.state!二 0&q-n ext-data.s
15、tate!=O)q-data.state=0;return OK;/主存回收Status recovery nt flag)Node *p=first;for(;p!=NULL;p=p-n ext)if(p-data .num=flag)if(p-prior=first)if(p-n ext!=e nd)/當(dāng)前P指向的下一個不是最后一個時與后面的空閑塊相連if(p-n ext-data.state=O)/p-dataen gth+=p-n ext-dataen gth;p-n ext- n ext-prior=p;p-n ext=p-n ext- n ext;p-data.state=O;p-
16、data .num 二flag;else p-data.state=0;if(p-next=end)/當(dāng)前P指向的下一個是最后一個時p-data.state=0;/ 結(jié)束 if(p-prior=block_first)的情況else if(p-prior!二first)if(p-n ext!=e nd)deal1(p); elsedeal2(p);/ 結(jié)束 if(p-prior!二block_first)的情況/ 結(jié)束 if(p-data.num=flag) 的情況printf(t*回收成功 *);return OK;/主函數(shù)void mai n()int i; /操作選擇標(biāo)記int a;/算
17、法選擇標(biāo)記n);printf(prin tf(tt用以下三種方法實(shí)現(xiàn)主存空間的分配n);printf(t(1)首次適應(yīng)算法t(2)最正確適應(yīng)算法t(3)最差適應(yīng)算法n);n)printf(prin tf(n);prin tf(請輸入所使用的內(nèi)存分配算法:);sca nf(%d, &a);while(a3)prin tf輸入錯誤,請重新輸入所使用的內(nèi)存分配算法:n;sea nf(%d, &a);switeh(a)使用首次適應(yīng)算法:*n;break;使用最正確適應(yīng)算法:*n;break;使用最壞適應(yīng)算法:*n;break;ease 1:pri ntf(nt*ease 2:pr in tf(nt*case 3:pri ntf(nt*In itblock(); /幵創(chuàng)空間表while(1)show();printf(t1:分配內(nèi)存t2: 回收內(nèi)存t0: 退出n);prin tf(請輸入您的操作:);sea nf(%d,&i);if(i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東大灣區(qū)一模數(shù)學(xué)試卷
- 高考為什么沒有數(shù)學(xué)試卷
- 高三高一數(shù)學(xué)試卷
- 鄂州高考數(shù)學(xué)試卷
- 肝病的識別和治療
- 2025年04月四川樂山市人民醫(yī)院臨床醫(yī)技類招聘60人筆試歷年專業(yè)考點(diǎn)(難、易錯點(diǎn))附帶答案詳解
- 馬云新人培訓(xùn)課件
- 2024年11月浙江浙商銀行總行授信評審部社會招考(1117)筆試歷年參考題庫附帶答案詳解
- 2024年重慶大學(xué)物理學(xué)院招聘筆試真題
- 2025至2030不銹鋼日用品行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 雙輪銑攪拌樁施工方案
- DG-TJ 08-2398-2022 纖維增強(qiáng)復(fù)合材料筋混凝土結(jié)構(gòu)技術(shù)標(biāo)準(zhǔn)
- 《公頃和平方千米》(課件)人教版四年級數(shù)學(xué)上冊
- NBT 35095-2017 水電工程小流域水文計算規(guī)范
- 煙葉道路運(yùn)輸服務(wù)方案
- 胎膜早破護(hù)理查房完整版
- 急性左心衰護(hù)理查房課件
- 用于生態(tài)修復(fù)的粉煤灰
- 精餾塔設(shè)計方案及流程
- (正式版)JBT 2603-2024 電動懸掛起重機(jī)
- (多應(yīng)用場合版)光伏組件外貿(mào)購銷合同-2024
評論
0/150
提交評論