代码: gitee
语言: C语言。
默认使用文件读入,终端输出。
p7.in
使用C编写的停车场模拟。模拟一个停车场的基本功能,包括停车、取车以及计算费用等操作。
程序使用了两个数据结构:堆栈和队列。
堆栈用于存储已经停泊的车辆。
在堆栈中,最后停泊的车辆位于栈顶,最先停泊的车辆位于栈底。当要取出一辆车时,必须先取出栈顶的车辆,如果不是目标车辆,就将其暂时存放在一个新的堆栈中,直到找到目标车辆为止。
队列用于存储等待停泊的车辆。
在队列中,最先到达的车辆位于队列头部,最后到达的车辆位于队列尾部。当有空余车位时,队列头部的车辆可以进入停车场。
程序提供了三个函数接口:
InitParkingLot
用于初始化停车场,包括停车场的容纳量和收费价格等信息。
ParkCar
用于将一辆新的车辆停泊到停车场中,如果停车场已满,则将其放入等待队列中。
LeaveCar
用于取出一辆已经停泊的车辆,并计算其停车费用。如果取车的车辆不在停车场中,则返回费用为-1。
InitParkingLot
该接口用于初始化停车场,包括停车场的容纳量和收费价格等信息。思路如下:
定义停车场结构体,包括停车场的容纳量、收费价格、当前停车数量、等待队列和已停泊车辆栈等成员。
使用 malloc 函数分配停车场结构体的内存空间。
调用 InitStack 和 InitQue 函数初始化停车场的已停泊车辆栈和等待队列。
将停车场的容纳量和收费价格等信息存储在停车场结构体中。
将停车场结构体的指针作为输出参数返回。
ParkCar
该接口用于将一辆新的车辆停泊到停车场中,如果停车场已满,则将其放入等待队列中。思路如下:
构造一辆新车,包括车牌号和到达时间等信息。
判断停车场是否已满,如果未满,则将新车辆停泊到停车场中,即将其压入已停泊车辆栈。
如果停车场已满,则将新车辆加入等待队列中。
LeaveCar
该接口用于取出一辆已经停泊的车辆,并计算其停车费用。如果取车的车辆不在停车场中,则返回费用为-1。思路如下:
从已停泊车辆栈中依次取出车辆,直到找到目标车辆为止。在取车的过程中,需要将未找到的车辆暂时存放在一个新的堆栈中。
如果找到目标车辆,则计算其停车费用,并将其从已停泊车辆栈中弹出。
如果未找到目标车辆,则将暂时存放的车辆重新压入已停泊车辆栈中,返回费用为-1。
如果停车场中有等待的车辆,则从等待队列中取出一辆车辆,将其停泊到停车场中。
返回目标车辆的停车费用。
停车场管理问题描述: 设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。 在停车场内,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端)。 若车场内已停满n辆车,则后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。 当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门后,其它车辆再按原次序返回车场。 每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收费)。
试编写程序,模拟上述管理过程。要求以顺序栈模拟停车场,以链队列模拟便道。
从终端读入汽车到达或离去的数据,每组数据包括三项:
① 是“到达”还是“离去”;
② 汽车牌照号码;
③ “到达”或“离去”的时刻。
与每组输入信息相应的输出信息为:
如果是到达的车辆,则输出其在停车场中或便道上的位置;
如果是离去的车辆,则输出其在停车场中停留的时间和应交的费用。
第一行,三个整数,表示停车场容纳量n
、收费价格price
、共计m
条请求信息。
n price m
接下来 m
行,每行一条请求信息:
请求类型 c
,车牌号 lice
,动作时间 t
。
c lice t
c 为字符:'P'表示停泊请求,'L'表示离开请求。 lice 为字符串,由大写字母和数字组成,表示车牌号。 t 为整数,表示时间
请求数据按照时间顺序输入,保证输入合法。
2 2 6
P A1001 1
P A1002 3
P A1003 5
L A1002 6
P A1004 7
L A1003 10
1 0
1 1
0 0
3 6
0 0
4 8
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。