【数据结构】c++实现简单的停车场

本文介绍了使用数据结构中的栈和队列,用C++实现一个简单的停车场管理系统。系统能够处理车辆到达和离开的情况,根据车辆到达顺序在停车场内或便道上安排停车位,并在车辆离开时计算停留时间和费用。文章提供了测试数据和程序实现,并强调了程序的容错性和车牌号判断的改进需求。
摘要由CSDN通过智能技术生成

【数据结构】c++实现简单的停车场

模拟停车厂管理

问题描述:

设停车厂只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门后,为它让路的车辆再按原次序进入车场。在这里假设汽车不能从便道上开走。

基本要求:

以栈模拟停车场,以队列模拟车场外的便道,按照从终端输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出车辆在停车场内或便道上的停车位置;若是车辆离去,则输出车辆在停车场内停留的时间和应缴纳的费用(在便道上停留的时间不收费)。栈以顺序结构出现,队列以链表结构实现。

测试数据:

(1)连续有7辆车到来,牌照号分别为JF001、JF002、JF003、JF004、、JF005、JF006、JF007,前5辆车应该进入停车位1-5车位,第6、7辆车应停入便道的1、2位置上。
(2)(1)中的情况发生后,让牌照号为JF003的汽车从停车厂开走,应显示JF005、JF004的让路动作和JF006从便道到停车位上的动作。
(3)随时检查停车位和便道的状态,不应该出现停车位有空位而便道上还有车的情况。
(4)程序容错性的测试,当按键输入错误的时候是否有错误提示给用户指导用户正确操作,并作出相应处理保证程序健康的运行。

代码实现

#include <iostream>
#include<string>
using namespace std;
#define MAXSIZE 5
#define price 0.05       //方便更改价格
int k = 1;
//信息
typedef struct
{
   
	int hour;
	int min;
	int locat;
	string name;
}INF;

//栈
typedef struct      
{
   
	INF data[MAXSIZE];
	int top;
}SeqStack, * LinkStack; 

//队列
typedef struct node       
{
   
	INF data;
	struct node* next;
}QNode;
typedef struct
{
   
	QNode* front, * rear;
}LQueue;

//初始化队列
LQueue* Init_LQueue()                     
{
   
	LQueue* q = new LQueue;
	QNode* p = new QNode;
	p->next = NULL;
	q->front = p;
	q->rear = p;
	return q;
}

//入队
void enterline(LQueue* q, int hour ,int min,string name)       
{
   
		QNode* p = new QNode;
		p->data.hour = hour;
		p->data.min = min;
		p->data.name = name;
		p->data.locat = k;
		p->next = NULL;
		q->rear->next = p;
		q->rear = p;
		k++;
}

//判断队列是否为空
int EmptyLQue(LQueue* q)           
{
   
	if (q->front == q->rear)
		return 0;
	else
		return 1;
}

//出队
QNode* outline(LQueue* q)        
{
   
	QNode* p;
	p = q
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值