📄 lundu.cpp
字号:
//用字符表示命令,h表示一辆货车请求过江,k表示一辆客车请求过江,用两队列分别模拟等待的货车和客车队列
//用s表示管理处允许一辆车上船,规定:在现有的等待队列中的车的基础上按规定上船
//用e表示停业或程序结束
#include <iostream>
using namespace std;
#define QUEUE_INIT_SIZE 100
#define QUEUE_INCREMENT 10
typedef char QElemType;
typedef struct{ //类型定义
QElemType *elem;
int front;
int rear;
int queuesize;
int incrementsize;
} SqQueue;
void InitQueue_Sq(SqQueue &Q) //初始化
{Q.elem=new QElemType[QUEUE_INIT_SIZE];
Q.front=Q.rear=0;
Q.queuesize=QUEUE_INIT_SIZE;
Q.incrementsize=QUEUE_INCREMENT;
}
void EnQueue_Sq(SqQueue &Q,QElemType e) //入队
{ void IncrementQueueSize(SqQueue &Q);
if(((Q.rear+1)%Q.queuesize)==Q.front) IncrementQueueSize(Q);
Q.elem[Q.rear]=e;
Q.rear=(Q.rear+1)%Q.queuesize;
}
void IncrementQueueSize (SqQueue &Q) //增长队列空间
{QElemType *a=new QElemType[Q.queuesize+Q.incrementsize];
for(int i=0;i<Q.queuesize;i++)
a[i]=Q.elem[(Q.front+i)%Q.queuesize];
delete []Q.elem;
Q.elem=a;
Q.front=0;
Q.rear=Q.queuesize-1;
Q.queuesize+=Q.incrementsize;
}
QElemType DeQueue_Sq(SqQueue &Q) //出队
{QElemType e;
e=Q.elem[Q.front];
Q.front=(Q.front+1)%Q.queuesize;
return e;
}
int main() //主函数
{
cout<<"命令H:货车请求等待"<<endl;
cout<<"命令K:客车请求等待"<<endl;
cout<<"命令S:允许一辆车上船"<<endl;
cout<<"命令E:停业所有车出队和下船"<<endl; //命令提示
SqQueue QH,QK;
InitQueue_Sq(QH);
InitQueue_Sq(QK); //构建两个队列
int hcount=0,kcount=0; //整型变量表示当前队列中车的数量
int i=1;int m=1; //m用作数组下标
bool flag=1;char ch;char a[100]; //数组a模拟船上 车的排队
while(flag)
{
cout<<"请输入命令:";
cin>>ch;
if((ch=='H')||(ch=='h'))
{EnQueue_Sq(QH,'H');hcount++;} //货车入队等待
else if((ch=='k')||(ch=='K'))
{EnQueue_Sq(QK,'K');kcount++;} //客车入队等待
else if((ch=='S')||(ch=='s')) //按规定上一辆车
{if((kcount!=0)&&(i<=4)){a[m]=DeQueue_Sq(QK);kcount--;i++;m++;}
else if(hcount!=0){a[m]=DeQueue_Sq(QH);hcount--;m++;i=1;}
else{i=1;cout<<"可能无车等待,请再输入一次上车命令以便检验,如再次出现此话则无车等待"<<endl;}
if((m-1)%10==0) //上够十辆车就开船
{for(int j=m-10;j<m;j++)
{cout<<a[j]<<",";}
cout<<endl;}
}
else if(ch=='E'||ch=='e')
{cout<<"停业,所有车出队,下船"<<endl; flag=0;}
else cout<<"输入命令非法"<<endl;
}//endwhile
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -