1 Star 1 Fork 0

Qzx/data-structure-course

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
Qzx- Qzx l3 e80e018 2年前
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Problem 7 停车场管理问题

代码: gitee

语言: C语言。

默认使用文件读入,终端输出。 p7.in

笔记

使用C编写的停车场模拟。模拟一个停车场的基本功能,包括停车、取车以及计算费用等操作。

数据结构

程序使用了两个数据结构:堆栈和队列。

堆栈

堆栈用于存储已经停泊的车辆。

在堆栈中,最后停泊的车辆位于栈顶,最先停泊的车辆位于栈底。当要取出一辆车时,必须先取出栈顶的车辆,如果不是目标车辆,就将其暂时存放在一个新的堆栈中,直到找到目标车辆为止。

队列

队列用于存储等待停泊的车辆。

在队列中,最先到达的车辆位于队列头部,最后到达的车辆位于队列尾部。当有空余车位时,队列头部的车辆可以进入停车场。

函数接口

程序提供了三个函数接口:

InitParkingLot

用于初始化停车场,包括停车场的容纳量和收费价格等信息。

ParkCar

用于将一辆新的车辆停泊到停车场中,如果停车场已满,则将其放入等待队列中。

LeaveCar

用于取出一辆已经停泊的车辆,并计算其停车费用。如果取车的车辆不在停车场中,则返回费用为-1。

函数实现

InitParkingLot

该接口用于初始化停车场,包括停车场的容纳量和收费价格等信息。思路如下:

  1. 定义停车场结构体,包括停车场的容纳量、收费价格、当前停车数量、等待队列和已停泊车辆栈等成员。

  2. 使用 malloc 函数分配停车场结构体的内存空间。

  3. 调用 InitStack 和 InitQue 函数初始化停车场的已停泊车辆栈和等待队列。

  4. 将停车场的容纳量和收费价格等信息存储在停车场结构体中。

  5. 将停车场结构体的指针作为输出参数返回。

ParkCar

该接口用于将一辆新的车辆停泊到停车场中,如果停车场已满,则将其放入等待队列中。思路如下:

  1. 构造一辆新车,包括车牌号和到达时间等信息。

  2. 判断停车场是否已满,如果未满,则将新车辆停泊到停车场中,即将其压入已停泊车辆栈。

  3. 如果停车场已满,则将新车辆加入等待队列中。

LeaveCar

该接口用于取出一辆已经停泊的车辆,并计算其停车费用。如果取车的车辆不在停车场中,则返回费用为-1。思路如下:

  1. 从已停泊车辆栈中依次取出车辆,直到找到目标车辆为止。在取车的过程中,需要将未找到的车辆暂时存放在一个新的堆栈中。

  2. 如果找到目标车辆,则计算其停车费用,并将其从已停泊车辆栈中弹出。

  3. 如果未找到目标车辆,则将暂时存放的车辆重新压入已停泊车辆栈中,返回费用为-1。

  4. 如果停车场中有等待的车辆,则从等待队列中取出一辆车辆,将其停泊到停车场中。

  5. 返回目标车辆的停车费用。

题面

校园TIC平台

【问题描述】

停车场管理问题描述: 设停车场是一个可停放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
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/Qzx3337/data-structure-course.git
git@gitee.com:Qzx3337/data-structure-course.git
Qzx3337
data-structure-course
data-structure-course
master

搜索帮助