数据结构栈和队列(以停车场管理题目为例)

/*实验 栈和队列实验

实验目的
熟悉栈和队列的基本特性,掌握栈和队列基本运算的实现过程。
时间要求:4+4学时
问题描述:
设停车场内只有一个可停放 n 辆汽车的狭长通道,且只有一个
大门可供汽车进出,汽车在停车场内按车辆到达时间的先后顺序,
依次由北向南排列(大门在最南端,最先到达的第一辆车停放在
车场
的最北端),若车场内已停满 n 辆汽车,则后来的汽车只能在
门外的便道上等候, 一旦有车开走,则排在便道上的第一辆车即可
开入,当停车场内某辆车要离开时,在它之后开入的车辆必须先
退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序
进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的
时间长短交纳费用,当便道上汽车要离开时,排在它前面的汽车要
先开走让路,然后再依次排到队尾,并且在便道上停车不收费。
试为停车场编制按上述要求进行管理的模拟程序。
基本要求:
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的
输入数据序列管理,每一组输入数据包括三个数据项:
汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时间,


对每一组输入数据进行操作后的输出数据为: 若是车辆到达,
则输出汽车在停车场内或便道上的停车位置;若是车辆离去,
则输出汽车在停车场内停留的时间和应交纳的费用(在便递上
停留的时间不收费),栈以顺序结构实现,队列以链表结构实现



实现提示:
需另设一栈,临时停放为给要离去的汽车让路而从停车场退出
来的汽车,也用顺序存储结构实现。输入数据按到达或离去的
时刻有序。栈中每个元素表示一辆汽车,包含有两个数据项:
汽车牌照号码和进入停车场的时间。
选作内容:
(1)两个栈共享空间,思考应开辟数组的空间是多少 ?
(2)汽车可有不同种类,则它们的占地面积不同,收费标准也
不同,如 1 辆客车和 1.5 辆小汽车的占地面积相同,1辆十轮
卡车占地面积相当于3辆小汽车的占地面积 。
(3)停放在便道上的汽车也收费,收费标准比停放在停车场的
车低,请思考如何修改结构以满足这神要求。
Input
输入第一行,包括两个数据,第一个整数为停车场最多可停放
车辆数,第二个浮点数表示单位时间的停车费用。接下来有多
行数据,每行有三个整数,第一个为0或1,0表示进入车场,
1表示离开车场;第二个整数为车号;第三个整数为进入或离开
的时间。当一行中三个数均为0时表示输入结束,所有数据之间
由空格分隔。
Output
输出为三部分,第一部分为按离开停车场顺序打印出的各车费用,
每车一行,包括车号和费用(保留小数点后两位)。第二部分占一行
为当前停车场中的所有车辆,从北到南顺序输出各车车号。
第三部分占一行为当前便道上的所有车辆,从前向后顺序输出
各车车号。各车号之间由一个空格分隔。
Sample Input
2  1.5
0  1  5
0  2  10
1  1  15
0  3  20
0  4  25
0  5  30
0  6  35
1  2  40
0  7  45
1  6  50
0  0  0
Sample Output
1  15.00 
2  45.00
3  4
7  5*/

 

代码实现如下:

#include<algorithm>
#include<cstdio>
#include<stdlib.h>
//#include<bits/stdc++.h>
using namespace std;
int park_size=0;
float park_price=0;
typedef struct{
	int num;
	int time;
	int outime;
}park_data;
typedef struct{
	park_data *base;
	park_data *top;
	int stacksize;
}Sqstack;
typedef struct QNode{
	park_data data;
	struct QNode *next; 
}
问题描述:利用堆队列实现一个停车场管理系统 基本要求: 设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车进入停车场停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。编制一程序模拟该停车场管理。车辆的信息包括:车牌号、汽车到达/离去标志、到达/离去时刻等。按照从终端读入的数据序列进模拟管理。每辆车需要三个数据,其中车辆数据为:A表示到达,D表示离去,E表示程序结束。车辆牌照为整型数据。进场或离场时间同样为整型数据。对每一组输入数据进操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间应交纳的费用(在便道上停留的时间不收费)。 停车场管理系统主要实现以下几个功能: (1)根据车辆到达停车场到车辆离开停车场时所停留的时间进计时收费。 (2)该程序设计能够通过车牌号能查到该车辆在停车场或便道中的位置。 (3)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。实现停车场的调度功能。 [测试数据] (A,1,1) (A,2,2) (A,3,3) (A,4,4) (A,5,5) (D,2,7) (A,1,8) (A,4,9)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值