資源簡介
代碼主體非本人原創,由于測試中發現問題經本人修改后上傳。原資源:https://blog.csdn.net/houchaoqun_xmu/article/details/55541299
該資源VS2010下可直接使用。優化了原代碼中當出現請求內存塊大小大于現有內存塊大小時無法分配內存崩潰的現象。可實現首次適應算法,循環首次適應算法,最佳適應算法,最壞適應算法

代碼片段和文件信息
#include
#include
#include
#include
#include
using?namespace?std;
int?maxsize;
int?k[50];
typedef?struct?memory
{
bool?flage;
string?name;
int?start;
int?size;
memory?*front;
memory?*next;
}rd;
rd?*line?=?new?rd;
?
/*
struct?node
{
string?name;
string?operate;
int?size;
}node1node2;
*/
?
void?init()
{
line->flage?=?0;
line->name?=?“空“;
line->start?=?0;
line->size?=?maxsize;
line->front?=?NULL;
line->next?=?NULL;
}
?
void?display()
{
rd?*di?=?new?rd;
di?=?line;
while?(di?!=?NULL)
{
cout?<flage?<“??“?<name?<“??“?<start?<“??“?<size?< di?=?di->next;
}
?
/*
while?(q->front?!=?NULL)
{
cout?<front->flage?<“??“?<front->name?<“??“?<front->start?<“??“?<front->size?< q?=?q->front;
}
*/
}
?
void?firstmethod()
{
cout?<“請輸入申請的主存大小:??“?< cin?>>?maxsize;
init();
display();
while?(true)
{
string?operate;
rd?*temp?=?new?rd;
temp->front?=?NULL;
temp->next?=?NULL;
temp->flage?=?1;
cout?<“請求名稱(?shutdown?為結束標識符?)“?< cin?>>?temp->name;
cout?<“請求類型(?申請??完成?)“?< cin?>>?operate;
if?(operate?==?“shutdown“)
{
cout?<“此次首次適應算法分配結束!“?< return;
}
else?if?(operate?==?“申請“)
{
temp->start?=?0;
cout?<“請求大小“?< cin?>>?temp->size;
rd?*p?=?new?rd;
p?=?line;
while?(p?!=?NULL)
{
if?(!p->flage?&&?p->size?>=?temp->size)
{
temp->start?=?p->start?+?(p->size?-?temp->size);
p->size?-=?temp->size;
if?(p->next?!=?NULL)
{
temp->next?=?p->next;
p->next->front?=?temp;
}
temp->front?=?p;
p->next?=?temp;
}
p?=?p->next;
}
display();
}
else?if?(operate?==?“完成“)
{
rd?*p?=?new?rd;
p?=?line;
while?(p?!=?NULL)
{
if?(p->name?==?temp->name)
{
? rd?*q?=?new?rd;
q->flage?=?0;
q->name?=?“空“;
q->start?=?0;
q->size?=?maxsize;
q->front?=?NULL;
q->next?=?NULL;
if?(p->front?!=?NULL)
{
q?=?p->front;
if?(p->front->front?!=?NULL)?q->front?=?p->front->front;
else?q->front?=?NULL;
}
if?(!q->flage)
{
q->size?+=?p->size;
?
if?(p->next?!=?NULL?&&?!p->next->flage)
{
q->size?+=?p->next->size;
if?(q->next->next->next?!=?NULL)
{
q->next->next->next->front?=?q;
q->next?=?q->next->next->next;
}
else
{
q->next?=?NULL;
}
}
else?if?(p->next?!=?NULL)
{
q->next?=?p->next;
}
p?=?q->next;
}
else?if?(p->next?!=?NULL?&&?!p->next->flage)
{
p->size?+=?p->next->size;
if?(p->next->next?!=?NULL)
{
p->next->next->front?=?p;
p->next?=?p->next->next;
}
}
else?if?(((p->front?!=?NUL
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????921??2018-10-31?22:13??動態分區算法\動態分區算法.sln
????..A..H.?????14336??2018-11-12?17:21??動態分區算法\動態分區算法.suo
?????文件?????628568??2018-11-12?16:32??動態分區算法\Debug\動態分區算法.ilk
?????文件?????764928??2018-11-12?16:32??動態分區算法\Debug\動態分區算法.pdb
?????文件??????92160??2018-11-12?16:32??動態分區算法\Debug\動態分區算法.exe
?????文件?????????67??2018-11-12?17:14??動態分區算法\動態分區算法\data.txt
?????文件???????9853??2018-10-31?22:14??動態分區算法\動態分區算法\分區.cpp
?????文件???????7531??2018-11-12?22:48??動態分區算法\動態分區算法\動態分區.cpp
?????文件???????3300??2018-11-01?19:29??動態分區算法\動態分區算法\動態分區算法.vcxproj
?????文件???????1062??2018-11-01?19:29??動態分區算法\動態分區算法\動態分區算法.vcxproj.filters
?????文件????????143??2018-10-31?22:13??動態分區算法\動態分區算法\動態分區算法.vcxproj.user
?????文件???????1704??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\cl.command.1.tlog
?????文件??????14634??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\CL.read.1.tlog
?????文件????????920??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\CL.write.1.tlog
?????文件???????2238??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\li
?????文件???????4886??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\li
?????文件???????1032??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\li
?????文件????????834??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\mt.command.1.tlog
?????文件???????1494??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\mt.read.1.tlog
?????文件????????478??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\mt.write.1.tlog
?????文件?????355328??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\vc100.idb
?????文件?????282624??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\vc100.pdb
?????文件????????381??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\動態分區算法.exe.intermediate.manifest
?????文件?????????71??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\動態分區算法.lastbuildstate
?????文件???????2235??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\動態分區算法.log
?????文件????????713??2018-11-01?19:29??動態分區算法\動態分區算法\Debug\動態分區算法.vcxprojResolveAssemblyReference.cache
?????文件??????????0??2018-10-31?22:13??動態分區算法\動態分區算法\Debug\動態分區算法.write.1.tlog
?????文件?????191991??2018-10-31?22:14??動態分區算法\動態分區算法\Debug\首次適應.obj
?????文件?????222355??2018-11-12?16:32??動態分區算法\動態分區算法\Debug\動態分區.obj
?????文件????5853184??2018-11-12?17:21??動態分區算法\動態分區算法.sdf
............此處省略10個文件信息
評論
共有 條評論