用c语言编写银行家算法,C语言实现银行家算法

用c语言编写银行家算法,C语言实现银行家算法《C语言实现银行家算法》由会员分享,可在线阅读,更多相关《C语言实现银行家算法(8页珍藏版)》请在人人文库网上搜索。1、C语言实现银行家算法(源码、运行结果)一、源码/*银行家算法10-22*/#include/函数声明voidinit(int*pcount,int*scount,intAllocation1010,intNeed1010,intAvailable10);vo…

大家好,又见面了,我是你们的朋友全栈君。

《C语言实现银行家算法》由会员分享,可在线阅读,更多相关《C语言实现银行家算法(8页珍藏版)》请在人人文库网上搜索。

1、C语言实现银行家算法(源码、运行结果)一、 源码/* 银行家算法 10-22*/#include/函数声明void init(int * pcount,int * scount,int Allocation1010,int Need1010,int Available10);void print(int pcount,int scount,int Allocation1010,int Need1010,int Available10);int requs(int scount,int * Requestnumber,int Request10,int Allocation1010,int Ne。

2、ed1010,int Available10);void print2(int isreque,int number);void yhj(int number,int pcount,int scount,int Allocation1010,int Need1010,int Available10);int main()int conti=1; /0退出int pcount=0,scount=0; /进程数 和 资源数int Allocation1010;int Need1010;int Available10;/分配矩阵Allocation 需求矩阵Need 可利用资源向量Available。

3、 int number=0,Request10=0;/用于记录进程编号 用于记录请求向量while(true)init(&pcount,&scount,Allocation,Need,Available); /调用初始化函数print(pcount,scount,Allocation,Need,Available); /调用打印函数int isreque = requs(scount,&number,Request,Allocation,Need,Available); /调用是否请求函数if(isreque=1)printf(n把资源分配给进程P%d后,资源分配情况如下:n,number);。

4、print(pcount,scount,Allocation,Need,Available); /调用打印函数yhj(number,pcount,scount,Allocation,Need,Available); /调用银行家算法函数elseif(isreque=0)yhj(number,pcount,scount,Allocation,Need,Available); /调用银行家算法函数elseprint2(isreque,number);printf(是否继续?0退出,1继续:);scanf(%d,&conti);printf(n);if(conti = 0)break;printf(。

5、n);return 0;/初始化函数: 提示用户输入 进程数,资源数,Allocation矩阵等void init(int * pcount,int * scount,int Allocation1010,int Need1010,int Available10)int p,s;int i,j;printf(进程数:);scanf(%d,&p);*pcount = p;printf(资源数:);scanf(%d,&s);*scount = s;printf(Allocationn);for(i=0;i=0 & numberNeednumberj)for(j=0;jAvailablej)retu。

6、rn 4;return 2;/判断请求向量是否合理:是否小于可利用资源向量bool isrun2 = true;for(j=0;jAvailablej)return 3;/请求向量合理则分配资源/分配资源给请求的进程for(j=0;jWorkj)iscan = false; /printf(进程P%d不能运行n,i);break;if(iscan = true)Finishi = 1;printf(P%d ,i);/释放该进程前,可利用资源数Workfor(j=0;jscount;j+)printf(%3d,Workj);printf( );/该进程需求变量Needfor(j=0;jscoun。

7、t;j+)printf(%3d,Needij);printf( );/该进程占用资源数Allocationfor(j=0;jscount;j+)printf(%3d,Allocationij);printf( );for(j=0;jscount;j+)/进程运行完成,工作向量资源数增加Workj += Allocationij;printf( );/记录该进程至安全序列/printf(k=%d,i=%dn,k,i);xk = i; k+;/释放该进程后,可利用资源数Work+Allocationfor(j=0;jscount;j+)printf(%3d,Workj);printf(t 1);p。

8、rintf(n);/如果可用资源不能满足任何进程的需要 跳出循环/例如n=1 done1则跳出 done = 0;for(i=0;ipcount;i+)if(Finishi=1)done+;if(donen)printf(系统不安全,P%d等待nn,number);break;else if(done=pcount)printf(系统安全,存在着一个安全序列为:);for(i=0;ipcount;i+)if(i=pcount-1)printf(P%d,xi);elseprintf(P%d,xi);printf(nn);break;n+;二、 运行结果注:安全序列并不一定唯一。该算法只能输出其中一个安全序列。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163199.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux 设置oracle1521端口[通俗易懂]

    Linux 设置oracle1521端口[通俗易懂]centos5安装oracle实现其他机器连接,oracleserver与其他机器可以ping通,但由于linux防火墙默认是不开启1521端口的,应此需设置iptables;开始用命令设置:iptables-AINPUT-ptcp–dport1521-jACCEPTiptables-AOUTPUT-ptcp–sport1521-jACCEPT

    2022年5月29日
    46
  • devtools怎么用_webpack devtool

    devtools怎么用_webpack devtooldevtool配置一、devtool配置1.sourcemap源码地图2.webpack中的sourcemap3.对于开发环境一、devtool配置1.sourcemap源码地图本小节的知识与webpack无关前端发展到现阶段,很多时候都不会直接运行源代码,可能需要对源代码进行合并、压缩、转换等操作,真正运行的是转换后的代码与此同时就给调试带来了困难,因为当运行发生错误的时候,我们更加希望能看到源代码中的错误,而不是转换后代码的错误为了解决这一问题,chrome浏览器率先支持

    2022年10月6日
    3
  • sqlsession、sqlsessionManager以及sqlsessionTemplate的理解

    sqlsession、sqlsessionManager以及sqlsessionTemplate的理解sqlSession是mybatis的核心操作类,其中对数据库的crud都封装在这个中,是一个顶级接口,其中默认实现类是DefaultSqlSession这个类,为什么说DefaultSqlsession不是线程安全的?首先我们都知道mybatis在底层都是使用的JDBC,而JDBC这本来就是线程不安全的(连接对象Connection只有一个),所以我们只要关注session和co…

    2022年5月8日
    41
  • js数组浅拷贝_js数组深度复制

    js数组浅拷贝_js数组深度复制JavaScript实现数组的深拷贝、浅拷贝vararr=[‘old’,1,true,null,undefined];varnew_arr=arr.concat();//或者varnew_arr=arr.slice()也是一样的效果;new_arr[0]=’new’;console.log(arr);//["ol……

    2022年10月1日
    2
  • idea 202203激活码【中文破解版】2022.03.03

    (idea 202203激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html40ZKSWCX8G-eyJsaWNlbnNlSW…

    2022年3月13日
    402
  • Java对象拷贝_对象的拷贝有几种方法

    Java对象拷贝_对象的拷贝有几种方法大多时候时候使用的是Apache或Spring“BeanUtils,今天,我们来看一下一个更高效的属性拷贝方式:BeanCopier。https://github.com/cglib/cglibhttps://github.com/cglib/cglib/blob/master/cglib/src/main/java/net/sf/cglib/beans/BeanCopier.java首先梳理出来现在有哪些对象拷贝的方式:Apache的BeanUtils:BeanUtils是Apach.

    2025年9月5日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号