- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构停车场问题
一、需求分析
车辆目前情况,用户通过键盘输入,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间(离开时间减去停在停车场的时间)和应交纳的费用(在便道上停留的时间不收费)。
2.依次输入一系列数据项(3个数据:第一个字符数据A或D表示车辆的到达或离开,第二整形数据表示车辆的车牌号码,第三个整形数据表示汽车到达或离去的时间),要求同一辆汽车到达的时间比离开的时间早。
3.测试数据
设停车场能容纳3辆车。
请输入车辆目前情况:A ,1,5
1车辆停入停车场1号。
请输入车辆目前情况:A ,2,6
1车辆停入停车场1号
2车辆停入停车场2号。
请输入车辆目前情况:A ,3,5
输入时间错误哦!
请输入车辆目前情况:A ,3,6
1车辆停入停车场1号
2车辆停入停车场2号。
3车辆停入停车场3号。
请输入车辆目前情况:A ,4,6
1车辆停入停车场1号。
2车辆停入停车场2号。
3车辆停入停车场3号。
4车辆在便道1号。
停车场已满。4车辆已放在便道。
请输入车辆目前情况:D ,1,7
1车辆已离开。时间5,收费10块。
2车辆停入停车场1号。
3车辆停入停车场2号。
4车辆停入停车场3号。
请输入车辆目前情况:E ,0,0
程序结束,感谢使用本程序哦。
本程序其他错误处理,没有设置处理。
二、概要设计抽象数据类型
基本操作对象是汽车类,包含来去信息,车牌号以及到达时间;
Class Car//车辆信息
{
Public:
int Lincese;//车牌号
int ArriveTime;//到达时间
};
便道先进先出的特性用队列是十分好的,但停车场有一个要求就是先进的要出去时,所有车辆都要让路,所以停车场用栈来模拟,便道使用队列来模拟;
ADT StopStack
数据对象:D={|∈class car};
数据关系:R1={ ai-1, ai | ai-1, ai∈D, i=2,...,n }
约定an 端为栈顶,a1 端为栈底。
基本操作:
bool push(const Car item);
Bool pop(Carit);
bool topValue(Carit);
int lengh()const{return top;}
ADT StopQueue
数据对象:R={|∈class car};
数据关系: R1={ a i-1,ai | ai-1, ai ∈R, i=2,...,n}
约定其中a1 端为队列头, an 端为队列尾
基本操作:
bool enquene(constCaritem);
bool dequene(Carit);
bool frontValue(Carit);
int length();
算法的基本思想
(1)用一车类对象做中介,存储输入的要进停车场某一车量情况。
(2)当车进来的时候,首先让其按时间顺序依次入栈。(A为入栈,D为出栈,E为输入结束。)
(3)当size=3即栈满时,让其在便道时按时间顺序依次入队;
(4)当输入某元素要出栈时,让其上面元素依次压入另一个临时栈,并用通过当时车类的对象减去入栈时时间,算出停车时间,计算出停车费用,。在将临时栈中元素入栈。队列第一个元素入栈。
程序的流程
程序由三个模块组成:
输入模块:通过键盘输入某一车辆现在状态。
管理模块:首先判断第一个字符为A时,将该车类对象入栈,栈满时,在依次入队,当字符为D时,栈中元素出栈,记录当时出栈时间,得到停留时间,算出停车费用,若队中元素出列,无停车费用。
(3)输出模块:输出车站目前车辆情况。
三、详细设计
物理数据类型
数据类型(物理数据结构)的实现:
Class Car//车辆信息
{
Public:
int Lincese;//车牌号
int ArriveTime;//到达时间
};
模拟停车场的栈:
Class StopStack: public car
{
{
Private:
int size;
int top;
Car* listArray;
Public:
StopStack(int sz=DefaultListSize)
{size=sz;top=0;listArray=new Car[sz];}
~StopStack(){delete[]lis
文档评论(0)