?? 1.cpp
字號:
#include<iostream.h>
//隊列類聲明
class queue
{
private:
char *table;
int size;
int front,rear;
public:
queue(int n=0);
~queue();
bool isempty();
bool isfull();
bool enqueue(const char k);
char dequeue();
};
//隊列類操作實現(xiàn)
queue::queue(int n)
{
table=new char[n];
size=n;
front=rear=0;
}
queue::~queue()
{
delete []table;
size=0;
front=rear=0;
}
bool queue::isempty()
{
return front==rear;
}
bool queue::isfull()
{
return front==rear%size+1;
}
bool queue::enqueue(const char ch)
{
if(!isfull())
{
table[rear]=ch;
rear=(rear+1)%size;
return true;
}
else
{
cout<<"隊列已滿,"<<ch<<"值無法入隊列!"<<endl;
return false;
}
}
char queue::dequeue()
{
char ch=0;
if(!isempty())
{
ch=table[front];
front=(front+1)%size;
}
return ch;
}
void main()
{
queue q0(20),q1(20),q2(20); //創(chuàng)建三個隊列,q0為就緒隊列,q1和q2為等待隊列
int m,i=0;
char ch,c,c1;
for(ch='a';ch<='d';ch++) //依次創(chuàng)建a,b,c,d四個進程進入就緒隊列
q0.enqueue(ch);
while(i!=4)
{
c=q0.dequeue();
cout<<"進程"<<c<<"占有CPU開始運行"<<endl;
cout<<endl<<"請選擇:"<<endl
<<"0:進程完成,操作系統(tǒng)釋放該進程"<<endl
<<"1:等待事件1發(fā)生,進程入事件1等待隊列"<<endl
<<"2:等待事件2發(fā)生,進程入事件2等待隊列"<<endl
<<"3:運行時間片到,進程入就緒隊列"<<endl;
cin>>m;
switch(m)
{
case 0: cout<<"進程"<<c<<"完成"<<endl;
i++;
break;
case 1: cout<<"等待事件1發(fā)生,進程"<<c
<<"入事件1等待隊列"<<endl;
q1.enqueue(c);
cout<<"事件1是否出現(xiàn)?(y/n)\n";
cin>>c1;
if(c1=='y')
{
q0.enqueue(q1.dequeue());
cout<<"進程"<<c<<"入就緒隊列"<<endl;
}
break;
case 2: cout<<"等待事件2發(fā)生,進程"<<c
<<"入事件2等待隊列"<<endl;
q2.enqueue(c);
cout<<"事件2是否出現(xiàn)?(y/n)\n";
cin>>c1;
if(c1=='y')
{
q0.enqueue(q2.dequeue());
cout<<"進程"<<c<<"入就緒隊列"<<endl;
}
break;
case 3: cout<<"運行時間片到,進程"<<c<<"入就緒隊列\(zhòng)n";
q0.enqueue(c);
break;
default:cout<<"錯誤!"<<endl;
break;
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -