




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、班级:计算机 11-2学号: 40姓名:朱报龙成绩: _实验六栈和队列的应用一、 实验目的1 掌握栈的数据类型描述及栈的特点;2 掌握栈的顺序存储结构的特点及算法描述;3 掌握队列的数据类型描述及链式存储结构的特点和算法描述。二、 实验内容停车场管理。设有一个可以停放n 辆汽车的狭长停车场(先进后出),它只有一个大门可以供车辆进出。车辆按到达停车场时间的先后依次从停车场最里面向大门口处停放(最先到达的第一辆车停放在停车场的最里面)。如果停车场已放满n 辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车离开,则排在便道上的第一辆车就可以进入停车场。 停车场内如有某辆车要离开,在它
2、之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车再按原来的次序进停车场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车没进停车场就要离开,允许其离开,不收停车费,并且仍然保持在便道上的车辆次序。试编程模拟停车场管理。二、 设计与编码#include usingnamespace std;constintMax=2; / 车库最大容量constdouble price=30;/ 每小时的费用classcar / 车的信息类public :double time;/ 计费时间intnumber; / 车牌号car *next;/ 存放 ca
3、r 类型元素的数组初始地址;classcarstack/ 栈(停车场)的类friendclass parkingmanagement; /parkingmanagement 能访问 carstack 类中所有成员public :carstack();/ 构造函数,栈的初始化intempty();/ 判断栈是否为空intfull();/ 判断栈是否为满car *s;/ 存放 car 类型栈元素的数组初始地址inttop;/ 栈顶指针;classcarqueue / 队列(便道)的类friend classparkingmanagement; /parkingmanagement 能访问 cars
4、tack 类中所有成员public :carqueue();/构造函数,队列的初始化int full();/判断队列是否为满car *front,*rear;/ 存放 car 类型队列元素的数组初始地址;class parkingmanagementpublic :intpushstack(carstack &cs,intcnum, double ctime); / 入栈 ,cs 栈内进行调整,返回栈内位置void popstack(carstack &cs,intcnum); / 出栈, cs栈内进行调整,intpushqueue(carqueue &cq,intcnum, double c
5、time); / 入队 , 队内进行调整,返回队内位置intpopqueue(carqueue &cq);/出队 , 队内进行调整,返回汽车车牌号void arrival(carstack &cs,carqueue &cq,intcnum, double ctime);/ 车辆到达,/ 根据输入的车牌号、到达时间,变更函数参数;并cout 车位信息void leave(carstack &cs,carqueue &cq,intcnum, double ctime);void deletequeue(carqueue &cq,inti);/ 删除 cq过道中第 i 辆车/ 车辆离开,intpop
6、stacknumber;/ 专门存放出栈的时候返回的车牌号double popstacktime;/ 专门存放出栈的时候返回的时刻;carstack:carstack()/ 构造函数,栈的初始化top=-1;s=new carMax;/ 创建 car 类型栈元素的数组if (s=NULL)cout 栈空间分配不成功! endl;exit(1);intcarstack:full()/ 判断栈是否为满returntop=Max-1;carqueue:carqueue()/ 构造函数,队列的初始化rear=front=NULL;intparkingmanagement:pushstack(carst
7、ack &cs,intcnum, double ctime)/ 入栈 ,cs 栈内进行调整,返回栈内位置if (cs.top=Max-1)/Max 从开始, top 从开始cout 停车场已满! endl;returnMax;elsecs.top+;(cs.scs.top).number=cnum;/ 将 cnum赋给栈顶位置的车的车牌号,s是 car 类型栈元素的数组(cs.scs.top).time=ctime;/ 将ctime赋给栈顶位置的车的入栈时间,s 是car 类型栈元素的数组return(cs.top+1);/ 返回栈内位置加,即停车场内车位从号开始void parkingman
8、agement:popstack(carstack &cs,intcnum) / 出栈, cs 栈内进行调整,/ 根据车牌号把车弹出栈, 将出栈 car 的number赋值给 int popstacknumber/ 将出栈 car 的time 赋值给 double popstacktime,无返回值!inti;car p;carstack stemp;/ 定义一个 carstack 类型的临时存放出栈元素的栈for (i=0; ii)stemp.s+(stemp.top)=cs.s(cs.top)-;/ 出栈的元素数组逐个赋给临时栈popstacknumber=p.number;/ 将这个车牌
9、号信息传给int popstacknumber()popstacktime=p.time;/ 将该车的时间信息传给double popstacktime()cs.top-; / 栈顶指针回到原来位置 while (stemp.top=0) cs.s+(cs.top)=stemp.s(stemp.top)-; / 临时栈出栈的元素逐个赋给原栈,完成先退再进的工作intparkingmanagement:pushqueue(carqueue &cq,intcnum, double ctime)/ 入队 , 队内进行调整,返回队内位置car *p,*countp;intcount(1);/count
10、用于记录车在过道上的位置信息,因队列为链式的,所以进行循环累加p=new car;/ 创建一个 car 类型的指针p-number=cnum;p-time=ctime;p-next=NULL; / 首先将指向存放car 类型元素的数组初始地址置空if(cq.front=NULL)/ 第一次入队要判断头结点是否为空cq.front=cq.rear=p;else / 尾插法插入元素p-next=(cq.rear)-next;(cq.rear)-next=p;cq.rear=(cq.rear)-next;countp=(cq.front)-next;while (countp!=NULL)count
11、+;countp=countp-next; /count 即车在过道上的位置,【从开始计!】returncount;intparkingmanagement:popqueue(carqueue &cq)/ 出队 , 队内进行调整,返回汽车车牌号car p;p.number=(cq.front)-next)-number;/cq 队里,从 cq.front开始指向下一个元素的车牌号赋给car 类型的车信息p.time=(cq.front)-next)-time;/cq队里,从cq.front开始指向下一个元素的时刻/ 赋给 car 类型的车信息p.next=(cq.front)-next)-ne
12、xt;/cq 队里,从 cq.front开始指向下一个元素的指针/ 赋给 car 类型的车信息的下一个元素的指针returnp.number;cq.front=(cq.front)-next;void parkingmanagement:arrival(carstack &cs,carqueue &cq,int cnum, double ctime)/车辆到达,根据输入的车牌号、到达时间,变更函数参数;并cout 车位信息intpos;if(!(cs.full()/ 如果栈未满,车辆停入停车场intfl(0),i;/ 定义一个从开始的标记 flfor (i=0;i=cs.top;i+)if(c
13、s.si.number=cnum)/ 如果到达的车的车牌号 =栈内已有车辆的车牌号fl=1; /fl记break ;if(fl=1)/如果到达的车的车牌号!= 栈内已有车辆的车牌号cout 输入错误!请重新输入!endl;elsepos=pushstack(cs,cnum,ctime);/ 入栈,返回车位信息cout 该停车场还有空位,请到pos 号车位进行泊车 endl;coutendl;else / 如果栈满,车辆暂停便道pos=pushqueue(cq,cnum,ctime);/ 入队,返回车位信息cout 该停车场已满,请将车停到便道 pos 号车位上 endl;coutendl;vo
14、id parkingmanagement:leave(carstack &cs,carqueue &cq,intcnum, double ctime) /车辆离开,根据输入的车牌号找到汽车,并进行出栈操作、出队操作和入栈操作;并cout 停留时间和收费情况inti,flag(0),pstack,count(1),outcarnum;double hour;car *p;for (i=0;i=cs.top;i+)if (cs.si).number=cnum)flag=1;break ;if (flag)/ 如果输入的车牌号与栈内已有车辆的车牌号一致popstack(cs,cnum);/ 出栈操作
15、hour=ctime-popstacktime;/ 时间计算outcarnum=popqueue(cq);/ 将便道上的第一辆车出队,入栈。并将其车牌号赋给pstack=pushstack(cs,outcarnum,ctime);/ 将便道上的第一辆车,入栈outcarnumcout 该车在本停车场内停留时间为hour 分钟,应付金额 hour*(price/60) 元! next;if (p-number=cnum) / 在过道中找到要出去的车,则在队列中删除该car 。/ 后面的车辆依然顺序排列,补足空位deletequeue(cq,count);if (countMax)cout 您的车
16、在便道上的位置为count 号车位,请自行驶离,无需付费! endl;break ;if (p=NULL)cout 您的车不在本停车场内,或输入有误,请重新输入! endl;void parkingmanagement:deletequeue(carqueue &cq,car *p,*q;intj(0);inti)p=cq.front;while (p & jnext;j+; / 找到第 i 个节点 (i 从开始 ) if (!p | !p-next)coutnext; p-next=q-next; delete q;/*【以下是主程序】*void print()cout = = = = =
17、= = = = = = = = = = = = = = = = = = = = = = = = = = = = = =endl;cout =欢迎光临! = endl;cout = = endl;cout =本停车场收费标准为:元 / 小时;车库容量为: = endl;cout = = endl;cout =请输入您的泊车信息:格式为:(到达/ 离去 / 退出);车牌号;现在时刻= endl;cout =其中, A:到达; D:离去; E:退出系统 = endl;cout = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =acccarnumcartime;if (acc= A )park.arrival(cars,carq,carnu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南省安阳市文峰区2024-2025学年九年级上学期1月期末化学试题(含答案)
- 2019-2025年军队文职人员招聘之军队文职政治学能力检测试卷B卷附答案
- 临床急救知识培训课件
- 酒吧员工禁止恋爱合同(2篇)
- 2025年反电信网络诈骗法测试题库及参考答案
- 自体输血知识培训课件
- 农资产品经销代理合作协议
- 共享单车租赁服务协议
- 睡前故事故事解读
- 辽宁省大连市2024-2025学年高一上学期1月期末考试生物学试题(含答案)
- 《复杂系统理论》课件
- 2025福建省电力电网有限公司高校毕业生(第一批)招聘748人笔试参考题库附带答案详解
- 初中英语语法时态总复习课件
- 2025年济南工程职业技术学院单招职业技能测试题库必考题
- 零碳数据算力中心项目可行性研究报告
- 塔设备技术问答-化工设备
- 220KV线路监理实施细则
- 第八单元+中华民族的抗日战争和人民解放战争+作业设计方案 高一统编版2019必修中外历史纲要上册
- 第二章美容手术的特点及其实施中的基本原则美容外科学概论讲解
- 2024版政府机关临时工作人员劳动协议样本一
- 2025年湖北省新华书店(集团)限公司招聘(93人)高频重点提升(共500题)附带答案详解
评论
0/150
提交评论