ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:167.74KB ,
资源ID:17310602      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17310602.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(停车场管理实验报告Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

停车场管理实验报告Word格式.docx

1、(4) 测试数据:(5) 请输入停车场容量2A,1,1车停在停车场第 1 个位置A,2,2车停在停车场第 2 个位置A,3,3车停在便道第 1 个位置D,1,4停车时间:3 缴纳费用:¥3D,2,5A,5,5E,0,0二、概要设计 抽象数据类型 由于每一辆车有多个数据,所以定义一个类来存储汽车的“车牌号、时间”信息。 class cData Public: int number; int atime; ;停车场的大小是固定的,且只有一个口用于进出,所以用顺序栈模拟停车场,其ADT如下:ADT stack数据对象:D=(a1,a2ai|aicData)数据关系:R1=|ai-1,aiD,i=2,

2、3n基本操作: bool push (const cData &elem)/入栈 bool pop(const cData &elem)/出栈 bool topValue(cData &elem)/顶层元素值 int length() const return top;/栈的实际长度便道的大小未定,为了节约空间我们应该用链表实现队列,用队列模拟便道,ADT如下:ADT quenecData类型。 bool enquene (const cData &elem)/入队列 bool dequene (cData &elem)/出队列 virtual int length () const retu

3、rn (rear +size )-front +1)%size;/队列的实际长度 算法的基本思想 对于指定大小的停车场,只有一个口进入或者出去,先进后出,用栈存储,如果入栈失败则将车停到便道上,先到便道的车先进停车场,用队列存储,当某辆汽车出去时,在它后面的汽车要先退出再按原顺序进入车场,需要一个临时的存储空间来停这些车,而由于是最后一辆车在某辆车出去的时候要先出去而又最后进去,这个临时的存储空间应该是一个栈。三、详细设计实现概要设计中的数据类型分别用整形、整形存储用户的输入,并将相应数据存入cData类。用顺序栈表实现栈:class Stack private: int size; int

4、top; cData *listArray; public: Stack(int sz) size=sz;top=0;listArray=new cDatasz; Stack()delete listArray; bool push(const cData &elem)/进栈 if (top=size) return false; else listArraytop=elem; top+; return true; bool pop(cData &elem)/出栈 if (top=0) return false; elem=listArraytop-1; top-; bool topValue

5、(cData & elem)/顶层元素值 if(top=0)return false; it=listArraytop-1; int length()const return top;/栈实际长度 ;用顺序表实现队列(由于题目中没有明确表明便道的长度,队列应该用链表来实现比较合适且节省空间,但是为了方便程序的设计这里采用顺序表来实现):class Quene int front; int rear; Quene(int sz)size=sz+1;rear=0;front=1;listArray=new cDatasize; Quene()delete listArray; bool enque

6、ne(const cData &it)/入队 if(rear+2)%size=front)return false; rear=(rear+1)%size; listArrayrear=it; bool dequene(cData &it)/出队 if(length()=0)return false; it=listArrayfront; front=(front+1)%size; virtual int length()constreturn (rear+size)-front+1)%size;/队列的实际长度 ;实现程序的具体步骤: 车辆进入:每进入一辆汽车,进行入栈操作,即进入停车场;如

7、果入栈不成功,即停车场满,进入便道。 车辆出去: (1)对输入数据的车牌号与栈顶的车牌号比较,若相等则直接出栈,否则为要出去的车开道。 (2)在该车进行出栈操作后,再将临时栈中的数据弹出并入栈。 (3)将离开时间和进入的时间做差,得出停车时间进行输出,并且算出应该缴纳的费用(1元/h) (4)若车辆离开后队列不为空,表明便道上有车要进到停车场,修改该车辆的到达时间为离开车的离开时间,并且进行入栈操作。当输入不为E时,循环进行上述操作。 while(c!=E)/不退出程序 cData d; scanf(%c,%d,%d,&c,&d.number,&d.ctime); cData top; if(

8、c=A)/进入停车场 if(park.push(d)/入栈成功 cout停在停车场的i+位置endl;/输出提示语句 else/入栈失败 line.enquene(d); cout停车场已满,进入便道 line.enquene(d); else if(c=D)/离开停车场 park.topValue(top); while(top.number!=d.number)/为车开道 park.pop(top); temp.push(top);停车时间为d.ctime-top.ctimeh ;离开停车场,车牌号为d.number应该收费元/输出提示语句 i-; while(temp.length()!

9、=0)/回到车位 temp.pop(top); park.push(top); if(line.length()!=0)/由便道到车库 line.dequene(top); top.ctime=d.ctime;/进入的时间刚好是那辆车出去的时间 算法的时空分析对于入栈处理,时间复杂度为(1),对于出栈处理,最坏情况下的时间复杂度是(n)的。输入N次,出栈处理最多只有N/2次,所以时间复杂度最坏情况是(n2)的,最好情况是(n)的。停车场没有满,入栈成功,s.push()函数的调用关系图 车辆进入A停车场已经满,入栈失败,入队列line.enquene()主程序 退出程序E 程序结束如果离开的车

10、在栈顶,s.pop(),否则后面的车进入临时栈该车离开s.pop()临时栈中的车回到停车场s.push(temp.pop() 车辆退出D便道车入栈s.push(line.dequene()输入和输出的格式输入:2D,1,5输出:停在停车场第 1 个位置停在停车场第 2 个位置停车场已满,进入便道停车时间4h 离开停车场,车牌号为1应该收费2元四、测试结果五、用户使用说明(可选)1、本程序的运行环境为DOS操作系统,执行文件为停车场管理.exe2、运行程序时: 输入停车场长度 输入停车数据,按“出入停车场(A,D),车牌,时间”输入。 输出提示信息。六、实验心得 这次实验比前一次熟练了很多,思路很清晰,以后应该在实验上多花点心思,提高自己的编程和算法分析能力。七、附录#includeusing namespace std;class cData /每辆车的信息类 int number;/车牌号码 int ctime; /到达时间 main() int n;请输入停车场的长度n: cinn; Stack park(n); Stack temp(n); Quene line(100); char c= int i=1; system(pause);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1