📄 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();
};
//队列类操作实现
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); //创建三个队列,q0为就绪队列,q1和q2为等待队列
int m,i=0;
char ch,c,c1;
for(ch='a';ch<='d';ch++) //依次创建a,b,c,d四个进程进入就绪队列
q0.enqueue(ch);
while(i!=4)
{
c=q0.dequeue();
cout<<"进程"<<c<<"占有CPU开始运行"<<endl;
cout<<endl<<"请选择:"<<endl
<<"0:进程完成,操作系统释放该进程"<<endl
<<"1:等待事件1发生,进程入事件1等待队列"<<endl
<<"2:等待事件2发生,进程入事件2等待队列"<<endl
<<"3:运行时间片到,进程入就绪队列"<<endl;
cin>>m;
switch(m)
{
case 0: cout<<"进程"<<c<<"完成"<<endl;
i++;
break;
case 1: cout<<"等待事件1发生,进程"<<c
<<"入事件1等待队列"<<endl;
q1.enqueue(c);
cout<<"事件1是否出现?(y/n)\n";
cin>>c1;
if(c1=='y')
{
q0.enqueue(q1.dequeue());
cout<<"进程"<<c<<"入就绪队列"<<endl;
}
break;
case 2: cout<<"等待事件2发生,进程"<<c
<<"入事件2等待队列"<<endl;
q2.enqueue(c);
cout<<"事件2是否出现?(y/n)\n";
cin>>c1;
if(c1=='y')
{
q0.enqueue(q2.dequeue());
cout<<"进程"<<c<<"入就绪队列"<<endl;
}
break;
case 3: cout<<"运行时间片到,进程"<<c<<"入就绪队列\n";
q0.enqueue(c);
break;
default:cout<<"错误!"<<endl;
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -