文档介绍::“资源分配表”文件,每一行包含资源编号、进程编号两项(均用整数表示,并用空格分隔开),记录资源分配给了哪个进程。“进程等待表”文件,每一行包含进程编号、资源编号两项(均用整数表示,并用空格分隔开),记录进程正在等待哪个资源。下面是一个示例:资源分配表:112233进程等待表::程序运行时,首先提示“请输入资源分配表文件的文件名:”;再提示“请输入进程等待表文件的文件名:”。输入两个文件名后,程序将读入两个文件中的有关数据,并按照死锁检测算法进行检测。:第一行输出检测结果:有死锁或无死锁。第二行输出进程循环等待队列,即进程编号(如果有死锁)。:(依据所用语言确定)输入文件名字::XXX为账号。:当任一进程Pj申请一个已被其他进程占用的资源ri时,进行死锁检测。检测算法通过反复查找进程等待表和资源分配表,来确定进程Pj对资源ri的请求是否导致形成环路,若是,便确定出现死锁。:测试教师将事先准备好一组文件(格式为*.txt),从中为每个程序随机指定一至三个作为输入文件(被测试者需从键盘输入指定文件的文件名),并查看程序输出结果。  本程序包括:死锁检测算法  VC++调试通过  (C)copyrightbyNeo  欢迎大家测试请问题请Email:sony006@*/#include<>#include<>#include<>constintMAXQUEUE=100;  //定义表的最大行数typedefstructnode{intresource;intprocess;}cell;upy[MAXQUEUE];upy_quantity;cellwait[MAXQUEUE];intwait_quantity;//初始化函数voidinitial(){inti;for(i=0;i<MAXQUEUE;i++){  occupy[i].process=-1;  occupy[i].resource=-1;  wait[i].process=-1;  wait[i].resource=-1;}occupy_quantity=0;wait_quantity=0;}//读数据文件intreadData(){FILE*fp;charfname[20];inti;cout<<"请输入资源分配表文件的文件名:"<<endl;strcpy(fname,"");//cin>>fname;if((fp=fopen(fname,"r"))==NULL){  cout<<"错误,文件打不开,请检查文件名:)"<<endl;  return0;}else{  while(!feof(fp)){  fscanf(fp,"%d%d",&occupy[occupy_quantity].resource,&occupy[occupy_quantity].process);  occupy_quantity++;  }}cout<<"请输入进程等待表文件的文件名:"<<endl;strcpy