实验四 停车场管理
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构定义: 数据结构定义:
#define MAX 3 /*车库容量 车库容量*/ 车库容量 #define price 0.05 /*每车每分钟费用 每车每分钟费用*/ 每车每分钟费用 typedef struct car{ typedef struct time{ CarNode *data; int hour; struct car *next; int min; }QueueNode; }Time; /*时间结点 时间结点*/ 时间结点 typedef struct Node{ typedef struct node{ QueueNode *head; char num[10]; //车牌号 车牌号 QueueNode *rear; Time reach; }LinkQueueCar; /*模拟通道 模拟通道*/ 模拟通道 Time leave; }CarNode; /*车辆信息结点 车辆信息结点*/ 车辆信息结点 typedef struct NODE{ CarNode *stack[MAX+1]; int top; 模拟车场*/ }SeqStackCar; /*模拟车场设置另一个栈, 设置另一个栈,临时停放为给要离去的汽车让路而 从停车场退出的汽车,用顺序结构实现; 从停车场退出的汽车,用顺序结构实现; 注意: 注意:
输入数据按到达或离去的时刻有序。 输入数据按到达或离去的时刻有序。
程序结构: 程序结构:
main
InitStack
InitQueue
Arrival
Leave
List
其中, 其中,
InitStack (SeqStackCar *s) :初始化栈 顺序栈 初始化栈(顺序栈 停车场。 初始化栈 顺序栈)——停车场。 停车场 int InitQueue (LinkQueueCar *Q) :初始化通道 用链队列结构 。 初始化通道(用 结构)。 初始化通道 链队列结构 int Arrival (SeqStackCar *Enter, LinkQueueCar *W) :车辆到达。如果, 车辆到达。 车辆到达 如果, 车位不满,则进栈,并输入到达车场的时间(以 的格式给出); 车位不满,则进栈,并输入到达车场的时间 以hh:mm的格式给出 ; 的格式给出 否则进入通道等待。 否则进入通道等待。 Leave (SeqStackCar *Enter, SeqStackCar *Temp, LinkQueueCar *W): 车辆离开。离开时,需辅助一个临时栈Temp,并输入离开车场的时 车辆离开。离开时,需辅助一个临时栈 , 的格式给出), 间(以hh:mm的格式给出 ,此时,需要计算停车费用 ;当一辆车离开 以 的格式给出 此时, 要判断通道上是否有车等待,如果有,则需从通道进入车场。 后,要判断通道上是否有车等待,如果有,则需从通道进入车场。 List (SeqStackCar S, LinkQueueCar W):显示车辆信息。包括:车牌号、 显示车辆信息。 显示车辆信息 包括:车牌号、 到达时间、停车位、在通道上等待的位置、离开时间、停车费用等。 到达时间、停车位、在通道上等待的位置、离开时间、停车费用等。
【问题描述】见“题集”P96。 问题描述】 题集” 。 基本要求】 栈模拟停车场, 队列模拟车场外的便道, 车场外的便道 【基本要求】以栈模拟停车场,以队列模拟车场外的便道, 按照从终端读入的输入数据序列进行模拟管理。 按照从终端读入的输入数据序列进行模拟管理。 每一组输入数据包括三个数据项:汽车“到达” 离去” ⑴每一组输入数据包括三个数据项:汽车“到达”或“离去” 信息、汽车牌照号码以及到达或离去的时刻; 信息、汽车牌照号码以及到达或离去的时刻; 对每一组输入数据进行操作后输出信息为:若是车辆到达, ⑵对每一组输入数据进行操作后输出信息为:若是车辆到达, 则输出汽车在停车场或便道上的停车位置;若是车辆离去, 则输出汽车在停车场或便道上的停车位置;若是车辆离去, 则输出汽车在停车场内停留的时间和应交纳的费用(在便 则输出汽车在停车场内停留的时间和应交纳的费用 在便 道上停留的时间不收费) 道上停留的时间不收费 ; 栈以顺序结构实现,队列以链表结构实现。 ⑶栈以顺序结构实现,队列以链表结构实现。