1、需求分析
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
2、概要设计
1)为了实现上述程序功能,设计了13个模块(函数):
1.void InitStack(SqStack &S);//初始化栈
2.int StackEmpty(SqStack S);//判栈空
3.int StackFull(SqStack S);//判栈满
4.void Push(SqStack &S,char *ch,int time);//进栈
5.void Pop(SqStack &S,CarType &eCar);//出栈
6.void InitQueue(LinkQueue &Q);//初始化队列
7.int QueueEmpty(LinkQueue Q);//队空
8.void EnQueue(LinkQueue &Q,char *ch);//进队列
9.void DeQueue(LinkQueue &Q,CarType &eCar);//出队列
10.void Car_Come(SqStack &S,LinkQueue &Q);//
11.void Car_leave(SqStack &S,LinkQueue &Q);//
12.void seeStack(SqStack S);//查看车场信息
13.void seeQueue(LinkQueue Q);//查看便道信息
3、调试分析
设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。