91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-05-22
  • 語(yǔ)言: C/C++
  • 標(biāo)簽:

資源簡(jiǎn)介

標(biāo)準(zhǔn)的成組鏈接法。30個(gè)盤塊,五個(gè)一組,

資源截圖

代碼片段和文件信息

#include?
#include??????//用來(lái)分配內(nèi)存的頭文件
//******************************************************************************
const?int?BlockSize=512;//盤塊的大小
const?int?GroupSize=5;??//盤塊分組數(shù)量,初始化時(shí)用
//******************************************************************************
typedef?struct?
{
???int?*top;??//指向盤塊號(hào)棧的頂部,也就是棧的最上面(不是書(shū)上畫(huà)的視覺(jué)的最上面)的元素的下一個(gè)地址
???int?*base;?//指向棧底,也就是裝有盤塊號(hào)棧的盤塊的首地址
}Block;
Block?DiskBlock[30];??//定義全局的系統(tǒng)盤塊數(shù)組,用來(lái)模擬30個(gè)盤塊的磁盤
Block?MemoryBlock;????//定義內(nèi)存盤塊的堆棧,模擬運(yùn)行在內(nèi)存中的堆棧這里為了直觀,所以將內(nèi)存盤塊棧和系統(tǒng)盤塊分別定義,但是這樣增加了代碼的長(zhǎng)度
int?GroupNumber;??????//盤塊分組的數(shù)量,和GroupSize不一樣,它是隨著分配和回收而可能發(fā)生動(dòng)態(tài)變化的
bool?CopyPattern;?????//這里的CopyPattern的設(shè)置是為了后面分配和回收的算法共享Copy()函數(shù)。
int?SpareBlockNumber;?//系統(tǒng)現(xiàn)有的空閑盤塊數(shù)量(計(jì)數(shù))
//******************************************************************************
bool?InitBlock()?//為盤塊(包括內(nèi)存盤塊)分配空間,并進(jìn)行部分初始化工作。
{
for(int?i=0;i<30;i++)
{
????????DiskBlock[i].base=(int?*)malloc(BlockSize*sizeof(int));
if(!DiskBlock[i].base)
{
cout<<“存儲(chǔ)分配失敗“< return?false;
}
DiskBlock[i].top?=?DiskBlock[i].base+1;
*(DiskBlock[i].base)=0;??//B.base指向的地址存放盤塊數(shù)量,這里是初始化。
}
MemoryBlock.base=(int?*)malloc(BlockSize*sizeof(int));
if(!MemoryBlock.base)
{
cout<<“存儲(chǔ)分配失敗“< ????return?false;
}
MemoryBlock.top?=?MemoryBlock.base+1;
*(MemoryBlock.base)=0;??//B.base指向的地址存放盤塊數(shù)量,這里是初始化。
return?true;
}
//******************************************************************************
static?void?InitialAllocation()//初始化系統(tǒng)磁盤的盤塊的成組鏈接情況,這里為了簡(jiǎn)單直觀起見(jiàn),先按盤塊號(hào)由小到大的順序進(jìn)行連接
{??????????????????????????????//程序運(yùn)行中可以動(dòng)態(tài)從控制臺(tái)進(jìn)行修改(分配或者回收)。
GroupNumber=0;
SpareBlockNumber=0;??//空閑盤塊的數(shù)目初始置為0
for(int?j=0;j<30/GroupSize;j++)
{
for(int?i?=?0;i {
if(j==0)
{
*(MemoryBlock.top++)??=?i;
(*MemoryBlock.base)++;
SpareBlockNumber++;?//空閑盤塊的數(shù)目加一
}
else
{??
*((DiskBlock[(j-1)*GroupSize].top++))??=?j*GroupSize+i;
(*DiskBlock[(j-1)*GroupSize].base)++;
SpareBlockNumber++;?//空閑盤塊的數(shù)目加一
}
}
GroupNumber++;
}
}
//******************************************************************************
bool?Show()
{?
int?FirstBlockID;
int?GroupID=0;??//用來(lái)標(biāo)識(shí)當(dāng)前盤塊組的序號(hào)
bool?IsFirstGroup=true;
????cout< for(int?i=0;i {??
if(IsFirstGroup)
{
MemoryBlock.top=MemoryBlock.base+1;
FirstBlockID=*(MemoryBlock.top);
cout<se)<<“?Block(s)?as?follows:\n“;
cout<“;
for(int?i=0;i<*(MemoryBlock.base);i++)
cout<<*(MemoryBlock.top++)< cout< IsFirstGroup=false;
GroupID++;
}
else
{???
????????????DiskBlock[FirstBlockID].top=DiskBlock[FirstBlockID].base+1;
cout<se)<<“?Block(s)?as?follows:\n“;
cout<“;
for(int?i=0;i<*(

評(píng)論

共有 條評(píng)論

相關(guān)資源