问答题
某汽车轮渡口,过江渡船每次能载10辆车过江。过江车辆分为客车类和汽车类,上渡船有如下规定:同类车先到先上船,客车先于货车上船,且每上4辆客车,才允许上一辆货车,若等待客不足4辆,则以货车代替,若无货车等待允许客车都上船。写一算法模拟渡口管理。
【正确答案】
【答案解析】假设q数组的最大下标为10,恰好是每次渡载的最大量。假设客车的队列是q1,货车的队列是q2。算法如下:
void Manager(Sqqueue* q,Squeue * q1,Squeue * q2)
{
elemtype x;
intj=0,i=0;
while(j<10)
{
if(!empty(q1)&&i<4)
{
x=q1->data[q1->front];
q1->front=q1->front+1;
q->rear=q->rear+1;
q->data[q->rear]=x:
i++;
j++;
}
if((i==4) &&!empty(q2))
{
x=q2->data[q2->front];
q2->front=q2->front+1;
q->rear=q->rear+1;
q->data[q->rear]=x:
j++;
i=0:
}
if(empty(q2)&&!empty(q1))
i=0:
}
}