#include <iostream>
#include "f:\bufferpool\Queue.h"
using namespace std;
using std::cin;
using std::cout;
using std::string;
using std::endl;
int main()
{int i,j,buffer;
SqQueue Q,Q1,Q2;
int Input(SqQueue &Q,SqQueue &Q1);
int Inget(SqQueue &Q,SqQueue &Q1);
int Output(SqQueue &Q,SqQueue &Q2);
int Outget(SqQueue &Q,SqQueue &Q2);
InitQueue(Q); //创建空缓冲队列
InitQueue(Q1); //创建输入队列
InitQueue(Q2); //创建输出队列
cout<<"请输入缓冲区空位的总数目:";
cin>>buffer;
cout<<"缓冲区共有"<<buffer<<"个空位"<<endl; //设置缓冲区空位数目
for(j=0;j<buffer;j++) EnQueue(Q,j);
cout << "请输入所选进程的代号:"<<endl;
while(1)
{
cout<<" 1:收容输入 " << endl;
cout<<" 2:提取输入 " << endl;
cout<<" 3:收容输出 " << endl;
cout<<" 4:提取输入 " << endl;
cout<<" 5:退出 " << endl;
cin>>i;
switch(i)
{
case 1:Input(Q,Q1); break;//功能选项
case 2:Inget(Q,Q1); break;
case 3:Output(Q,Q2); break;
case 4:Outget(Q,Q2); break;
case 5:return 0;
}
}
return 0;
}
int Input(SqQueue &Q,SqQueue &Q1)
{int e;
if(QueuLength(Q)>0) { cout<<"正在执行收容输入操作"<<endl;
e=DeQueue(Q,e);EnQueue(Q1,e);
cout<<"缓冲池中有"<<QueuLength(Q)<<"个数据"<<endl;
cout<<"输入队列中有"<<QueuLength(Q1)<<"个数据"<<endl;}
if(QueuLength(Q)==0) cout<<"缓冲池中的数据已空,不能再收容数据"<<endl;
}
int Inget(SqQueue &Q,SqQueue &Q1)
{int e;
if(QueuLength(Q1)>0){cout<<"正在执行提取输入操作"<<endl;
e=DeQueue(Q1,e);EnQueue(Q,e);
cout<<"缓冲池中有"<<QueuLength(Q)<<"个数据"<<endl;
cout<<"输入队列中有"<<QueuLength(Q1)<<"个数据"<<endl;}
if(QueuLength(Q1)==0) cout<<"输入队列中的数据已空,不能再提取数据"<<endl;
}
int Output(SqQueue &Q,SqQueue &Q2)
{int e;
if(QueuLength(Q)>0) { cout<<"正在执行收容输出操作"<<endl;
e=DeQueue(Q,e);EnQueue(Q2,e);
cout<<"缓冲池中有"<<QueuLength(Q)<<"个数据"<<endl;
cout<<"输出队列中有"<<QueuLength(Q2)<<"个数据"<<endl;}
if(QueuLength(Q)==0) cout<<"缓冲池中的数据已空,不能再收容数据"<<endl;
}
int Outget(SqQueue &Q,SqQueue &Q2)
{int e;
if(QueuLength(Q2)>0){cout<<"正在执行提取输出操作"<<endl;
e=DeQueue(Q2,e);EnQueue(Q,e);
cout<<"缓冲池中有"<<QueuLength(Q)<<"个数据"<<endl;
cout<<"输出队列中有"<<QueuLength(Q2)<<"个数据"<<endl;}
if(QueuLength(Q2)==0) cout<<"输出队列中的数据已空,不能再提取数据"<<endl;
}