停车场管理(栈与队列的应用)

   自动停车场由一个可停放n 辆车的狭长通道构成,且只有一个入口可供汽车进出。在停车场内,汽车按到达的先后次序,由北向南依次排列(假设入口在最南端)。若停车场内已停满n 辆车,则后来的汽车需在入口外的临时等候便道上等候,当有车要离开时,临时等候便道上的第一辆车即可进入。当自动停车场内某辆车要离开时,必须先将在它之后
进入的车辆移出为其让路,待该辆车离开后,其他车辆再按原次序移入自动停车场。每辆车离开自动停车场时,应按其停留时间的长短交费(在临时等候便道上停留的时间不收费)。

//head.h
#ifndef HEAD_H_INCLUDED
#define HEAD_H_INCLUDED
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
#define maxstacksize 4
#define maxqueuesize 5
struct Elem
{
    char op;
    char id[10];
    int hour;
    int minu;
};
struct Stack
{
    Elem* base;
    Elem* top;
    int stacksize;
};
struct QNode
{
    Elem data;
    QNode* next;
};
struct Queue
{
    QNode* Front;
    QNode* Rear;
    int queuesize;
};
void InitStack(Stack &s);
Elem GetTop(Stack s);
void push(Stack &s, Elem e);
E
问题描述:利用堆队列实现一个停车场管理系统 基本要求: 设停车场是一个可以停放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、付费专栏及课程。

余额充值