实现停车场管理设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/24 21:41:54
实现停车场管理设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车
实现停车场管理
设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端).若停车场内已经停满 n辆车,那么后来的车只能在门外的便道上等候.一旦有车开走,则排在便道上的第一辆车即可开入.当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场.每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用.试为停车场编制按上述要求进行管理的模拟程序.
2.基本要求:
程序以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入数据的序列进行模拟管理.栈以顺序结构实现,队列以链表结构实现.同时另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车.输入数据按到达或离去的时刻有序.当输入数据包括数据项为汽车的“到达”(‘A’表示)信息,汽车标识(牌照号)以及到达时刻时,应输出汽车在停车场内或者便道上的停车位置;当输入数据包括数据项为汽车的“离去”(‘D’表示)信息,汽车标识(牌照号)以及离去时刻时,应输出汽车在停车场停留的时间和应缴纳的费用(便道上停留的时间不收费);当输入数据项为(‘P’,0,0)时,应输出停车场的车数;当输入数据项为(‘W’,0,0)时,应输出候车场车数;当输入数据项为(‘E’,0,0),退出程序;若输入数据项不是以上所述,就输出"ERROR!"
实现停车场管理设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车
供参考
#include
#define MAXSIZE 10
#define MINSIZE 2
typedef int Datatype;
typedef struct{
\x05Datatype data1 [MINSIZE];
int top;
\x05double time[MINSIZE];
}SeqStack;
SeqStack *Init_SeqStack() //栈的初始化;
{SeqStack *s;
s=new SeqStack;
if(!s){
\x05coutdata1[s->top]=x;
\x05return;
}
int Push_SeqStack1(SeqStack *s,Datatype x,double t) //入栈算法1;
{if(s->top==MINSIZE-1)
return 0;
else{
\x05s->top++;
\x05s->data1[s->top]=x;
\x05s->time[s->top]=t;
\x05return 1;
}
}
void Pop_SeqStack(SeqStack *s,Datatype *x) //出栈算法;
{
\x05*x=s->data1[s->top];
\x05s->top--;
\x05return;
}
typedef struct
{
\x05Datatype data2[MAXSIZE];
\x05int rear,front;
\x05int num;
}C_SeQueue;
C_SeQueue *Init_SeQueue() //列队初始化;
{
\x05C_SeQueue *q;
\x05q=new C_SeQueue;
\x05q->front=q->rear=MAXSIZE-1;
q->num=0;
\x05return q;
}
void In_SeQueue(C_SeQueue *q,Datatype x) //入队算法;
{
\x05
\x05\x05q->rear=(q->rear+1)%MAXSIZE;
\x05\x05q->data2[q->rear]=x;
\x05\x05q->num++;
\x05\x05return;
\x05
}
void Out_SeQueue(C_SeQueue *q,Datatype *x)//出队算法;
{
\x05 q->front=(q->front+1)%MAXSIZE;
\x05\x05*x=q->data2[q->front];
\x05\x05q->num--;
\x05\x05return;
}
void show(SeqStack *s,C_SeQueue *q) //显示停车情况;
{
\x05cout