⒈问题描述:停车场管理问题[问题描述]设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场
停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序
编制一程序模拟该停车场的管理
[实现要求]要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间
[实现提示]汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)
例如,(‘A’,,1,5)表示1号牌照车在5这个时刻到达,而(‘D’,,5,20)表示5号牌照车在20这个时刻离去
整个程序可以在输入信息为(‘E’,0,0)时结束
本题可用栈和队列来实现
⒉设计:⑴数据结构设计和核心算法设计描述;停车场管理系统是充分利用数据结构中栈和队列的思想实现的,栈是一种只能在叫做栈的一段进行进栈或者出栈操作的线性数据结构
栈的主要特点是”后进先出”,即后进栈的元素先处理
停车场的容量即为栈的存储空间,停车场的车辆的停靠是无秩序的,因此采用链式存储的方式更适合,也方便车辆的调度
队列是限定仅能在表的一端进行插入,在表的另一端进行删除的线性表
队列中可以插入的一端称为队尾,可以删除的一端称为队首
把一个元素插入队列中的操作为进队,队列中删除一个元素的操作为出队
队列存取操作符合:先进先出
停车场的车辆到达