数据结构停车场问题.doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

almm118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档