模拟固定分区分配方法Word格式.docx
《模拟固定分区分配方法Word格式.docx》由会员分享,可在线阅读,更多相关《模拟固定分区分配方法Word格式.docx(7页珍藏版)》请在冰豆网上搜索。
![模拟固定分区分配方法Word格式.docx](https://file1.bdocx.com/fileroot1/2022-11/22/42f2bffd-377f-4478-8d6d-240e250ca0a7/42f2bffd-377f-4478-8d6d-240e250ca0a71.gif)
//分区链表的尾指针//
voidenter(),turn(),prin();
charstr[16][4]={"
1"
"
16"
20"
2"
32"
36"
3"
64"
68"
4"
124"
132"
0"
};
menu();
voidenter();
inputs();
voidturn();
voidprin();
main()
fir=back=NULL;
//对分区链表的头指针赋初值//
enter();
//对分区链表赋初值//
for(;
;
)
{
switch(menu())
{
case1:
inputs();
//输入作业大小并处理//
break;
case2:
turn();
//改变分配状态//
//case3:
turnall();
//改变所有分配状态//
//break;
case4:
prin();
//显示//
case5:
exit(0);
//退出//
}
}
}
menu()//主菜单//
charch[2];
intn;
printf("
\n\t固定分区操作,请选择功能:
\n"
);
\t1.输入作业的大小\n"
\t2.改变分区的分配状态\n"
//printf("
\t3.改变所有分区的分配状态\n"
\t4.显示分区链表内容\n"
\t5.退出\n"
do
\t请按数字选择:
"
gets(ch);
n=atoi(ch);
}while(n<
0||n>
4);
return(n);
voidenter()
intqq;
structgdf*inf,*bc();
for(qq=0;
qq<
4;
qq++)//节点初始化//
inf=(structgdf*)malloc(sizeof(stu));
//开辟新节点空间//
if(!
inf)
\tuseup!
return;
strcpy(inf->
num,str[qq*4]);
size,str[qq*4+1]);
begin,str[qq*4+2]);
flag,str[qq*4+3]);
fir=bc(inf,fir);
inputs()//输入作业大小并处理//
charq[5];
structgdf*inf;
inf=fir;
while(inf)//寻找空闲分区//
if(atoi(inf->
flag)==0)
break;
inf=inf->
next;
}
inf)//不存在空闲分区,返回//
\t暂时没有空闲分区.\n"
\t输入作业大小(K):
//打印提示信息//
gets(q);
while(inf)//寻找符合条件的空闲分区,找到则返回//
if((atoi(q)<
atoi(inf->
size))&
&
atoi(inf->
strcpy(inf->
flag,"
\t作业已分配在%s区.\n"
inf->
num);
\t空闲分区不够大,请选择另一个较小的作业.\n"
voidturn()//改变分配状态//
charq[5],q1[5];
\t输入分区(1-4):
//打印提示信息//
\t输入分配状态(0-1):
gets(q1);
while(inf)
num)==atoi(q))//寻找符合条件分区//
flag,q1);
//改变分区状态//
\t%s分区已成功改变分区状态.\n"
\t该分区不存在.\n"
//voidturnall()//改变所有分配状态//
//{
//charq[5],q1[5];
//printf("
\t是否确定改变所有分区状态Y\N"
//gets(q);
//if(q==Y)
//{
//printf("
//gets(q1);
//inf=fir;
//for(inf->
num=1;
inf->
num<
=4;
num++);
//{
//strcpy(inf->
//}
//}
//else
//return;
//}
//
voidprin()//显示//
structgdf*j;
j=fir;
\t区号"
\t大小"
\t起址"
\t标志\n"
while(j)//显示固定分区的信息//
\t%s"
j->
size);
begin);
flag);
j=j->
structgdf*bc(i,st)
structgdf*i;
structgdf*st;
structgdf*k;
if(back==NULL){
i->
next=NULL;
prior=NULL;
back=i;
return(i);
k=back;
k->
next=i;
prior=k;
return(st);
WelcomeTo
Download!
!
欢迎您的下载,资料仅供参考!