【讨论问题2】栈和队列的应用
[问题描述]
设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在停车场的最北端),若停车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入停车场;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场;每辆停放在车场的车在它离开停车场时,必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。
[实验目的]
(1)理解栈(先进后出)和队列(先进先出)的工作特点;
(2)掌握栈结构的构造方法以及栈的基本操作(出栈、入栈);
(3)掌握队列的构造方法以及队列的基本操作(出队、入队);
(4)运用栈和队列解决实际问题。
[实验内容及要求]
(1)以栈模拟停车场,以队列模拟停车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:(i) 汽车“到达”或“离去”信息,(ii) 汽车牌照号码,(iii) 到达或离去的时刻。
(2)对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间(单位是小时)和应交纳的费用(在便道上停留的时间不收费),假设停车费为每小时m元。
(3)等候在便道上的汽车可以直接从便道上开走,但此时排在它前面的汽车要先开走让路,然后再依次排到队尾。
(4)栈和队列均采用链表结构实现。
(5)提示:需另设一个栈(也用链表结构实现),临时停放为给要离去的汽车让路而从停车场退出来的汽车。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。
传送门:https://pan.baidu.com/s/1veef91VGmQq1aIokc6UO2g?pwd=1111