银行家算法
源程序:#include<stdio.h>
struct claim
{
int user;
int num[3];
}claims;
int input()
{
printf("please input your request:user(0~4):");
scanf("%d",&claims.user);
printf("input the number of resource a:");
scanf("%d",&claims.num[0]);
printf("input the number of resource b:");
scanf("%d",&claims.num[1]);
printf("input the number of resource c:");
scanf("%d",&claims.num[2]);
return 1;
}
int safety_chk(int alloc[][3],int need[][3],int avail[3])
{
int work[3],finish[5];
for(int p=0;p<5;p++)//i 大于 2 后对 WORK 是无意义的
{
work[p]=avail[p];
finish[p]=0;
}
for(int i=0;i<5;i++)
{
if(finish[i]==0&&
need[i][0]<=work[0]&&
need[i][1]<=work[1]&&
need[i][2]<=work[2] )
{
for(int j=0;j<3;j++)
work[j]=alloc[i][j]+work[j];
finish[i]=1;
i=-1;//重头再来
}
}
for(i=0;i<5;i++)
{
if(finish[i]==0)
return 0;