xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

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

資源簡介

標準的成組鏈接法。30個盤塊,五個一組,

資源截圖

代碼片段和文件信息

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

評論

共有 條評論

相關資源