汽车在停车场内按车辆到达时间的先后顺序依次由南向北排列(大门在最北端,最先到达的第一辆车停放在停车场的最南端),若停车场内已停满n辆车,则后来的汽车只能在门外的便道(即候车场)等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出停车场为它让路,待该车辆开出大门外,其他车辆再按原次序进入停车场,每辆停放在停车场的车在它离开停车场时必须按停留的时间长短交纳费用。
#include<iostream>
#include<time.h>
using namespace std;
#define Maxsize 3//栈最大队列数
#define Maxsize1 4//环形队,最大队列为Maxsize1-1
#define price 0.01//每秒计费
//-------------------------------------------------------以下为候车场相关(环形队)---------------------------------------------------------------------
typedef class {
public:
string plate_number[Maxsize1];
int front, rear;
}SqQueue;
//候车场计数
int countsq(SqQueue a) {
int s = 0;
while (a.front != a.rear) { s++; a.front++; }
return s;
}
//队列初始化
void initsqueue(SqQueue& Q)
{
Q.front = Q.rear = 0;
}
//入队,爆队返回false
bool enqueue(SqQueue& Q, string a) {
if ((Q.rear + 1) % Maxsize1 == Q.front)return false;
Q.plate_number[Q.rear] = a;
Q.rear = (Q.rear + 1) % Maxsize1;
return true;
}
//出队,栈空的返回fa