100][10]={0};//文件,用来记录申请的文件号和申请到的块号Р?int record[100]={0};//记录,用来记录哪个文件申请了块Р ps=&s;Р?initstack(ps);//初始化堆栈Р?p=head=creat();Р?printf("开始时空闲的块:\n\n");Р?print(head);Р?printf("\n");Р srand(time(NULL));//用于随机函数Р?for(i=1;i<=100;i++) //分配和回收,前半期申请居多Р { Р n=rand()%10+1;//随机生成1~10的数Р if(n>=3)Р { Р if((gettop(ps)<n)&(p==NULL)){i--;continue;}Р //如果100块都用完了,就不分配,继续循环?Р head=assign(p,ps,record,file,n);//分配Р p=head;Р }Р elseР {Р p=callback(head,ps,record,file);//回收Р head=p;Р }Р }Р?for(i=1;i<=100;i++) //分配和回收,后半期回收居多Р { Р n=rand()%10+1;//随机生成1~10的数Р if(n>=5)Р { Р Р if((gettop(ps)<n)&(p==NULL)){i--;continue;}Р Р head=assign(p,ps,record,file,n);//分配Р p=head;Р?Р }Р elseР {Р p=callback(head,ps,record,file);//回收Р head=p;Р }Р }Р?printf("所有请求完成后,磁盘中空闲的块号有:\n\n");Р?print(head);Р?printf("\n");Р?travelstack(ps);Р?}