




免费预览已结束,剩余3页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构实验报告一、实验题目: 停 车 场 管 理二、问题描述:设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。编制一程序模拟该停车场的管理。三、需求分析:停车场采用栈式结构,停车场外的便道采用队列结构(即便道就是等候队列)。停车场的管理流程如下:当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进栈(车辆进入停车场);如果停车场已满,则车辆进入等候队列(车辆进入便道等候)。当车辆要求出栈时,该车到栈顶的那些车辆先弹出栈(在它之后进入的车辆必须先退出车场为它让路),再让该车出栈,其他车辆再按原次序进栈(进入车场)。当车辆出栈完毕后,检查等候队列(便道)中是否有车,有车则从队列头取出一辆车压入栈中。四、概要设计:1、用栈模拟停车场,用队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。2、每一组输入数据包括三个数据项:汽车到达或离去的信息,汽车牌照号码以及到达或离去的时刻。3、每次输入完进行输出操作:若是车辆到达,输出汽车在停车场内或便道上的停车位置;若是车辆离去,输出停留时间和应缴纳的费用(在便道上停留的时间不收费)。4、其中栈以顺序结构实现,队列以链表结构实现。五、详细设计:1、定义栈(停车场) struct stack初始化栈void initstack(stack* s)元素进栈int instack(stack* s,cinfo x)元素出栈cinfo outstack(stack* s)2、定义队列(车场外的便道)struct queue 初始化队列void initqueue(queue* q) 元素进队列void inqueue(queue* q,int num1) 元素出队列int outqueue(queue* q)3、处理车辆到达的情况void carrival(stack* s,queue* q,cinfo x)处理车辆离开void carleave(stack* s1,stack* s2,queue* q,cinfo x)4、主程序void main()注:详细设计中的具体代码见模块代码中。 六、模块代码:#includeiostream.h int N; const int M=5;/M为单元时间的收费值 struct cinfo/定义栈中元素的类型 int cnum; int atime; ; struct stack/定义栈 cinfo cstack3000;/这里随便定义一个数字表示数组的长度,因为后 int top; /面会根据用户输入的N值作为停车场能够停车的 int size; /数量. ; struct node/定义队列节点的类型 node* next; int nnum; ; struct queue/定义队列 node *front,*rear; ; void initstack(stack* s)/初始化栈 s-top=-1; int instack(stack* s,cinfo x)/元素进栈 /int 元素进栈n; if(s-top=N-1) coutStack is full!cstack+s-top=x; return 1; cinfo outstack(stack* s)/元素出栈 cinfo y; if(s-toptop-; return s-cstacks-top+1; void initqueue(queue* q)/初始化队列 q-front=new node; q-rear=q-front; q-front-next=NULL; q-front-nnum=0; void inqueue(queue* q,int num1)/元素进队列 node* p; p=new node; p-nnum=num1; p-next=NULL; q-rear-next=p; q-rear=p; q-front-nnum+; int outqueue(queue* q)/元素出队列 node* p; int n; if(q-front=q-rear) return 0; else p=q-front-next; q-front-next=p-next; if(p-next=NULL) q-rear=q-front; n=p-nnum; delete p; q-front-nnum-; return n; void carrival(stack* s,queue* q,cinfo x)/处理车辆到达的情况 int f; f=instack(s,x); if(f=0) inqueue(q,um); coutThe Num car park into the posfront-nnum of the road.endl; else coutThe Num car park into the postop+1 of the room.top-1)&(n=0) y=outstack(s1); if(um!=um) a=instack(s2,y); else n=1; if(um=um) coutThe um car want to leave,the charge is (x.atime-y.atime)*M yuan!top-1) y=outstack(s2); n=instack(s1,y); a=outqueue(q); if(a!=0) um=a; y.atime=x.atime; n=instack(s1,y); coutThe Num car park into the postop+1 of the room.top-1) y=outstack(s2); n=instack(s1,y); p=q-front; n=0; while(p-next!=NULL&n=0) if(p-next-nnum!=um) p=p-next; else p-next=p-next-next; q-front-nnum-; if(p-next=NULL) q-rear=q-front; coutThe um want to leave from the road.endl; n=1; if(n=0) coutYou have entered a wrong number!endl; void main()/主程序 /int maxsize; coutStart,Written by ZIGZendlendlendl; coutPlease enter a number as the maxsize of the roomStack:N;/这里N将作为栈能存放元素的数量 while(N=0) coutOh!You have enter a wrong number,N should above 0.Please enter another number again:N; /stack *max; /max-size=maxsize; char ch1; stack* s1,*s2; queue* q; cinfo x; int flag; s1=new stack; s2=new stack; q=new queue; initstack(s1); initstack(s2); initqueue(q); flag=1; for(;) coutPlease enter the infomation: A/D; car number; car arrival umx.atime; switch(ch1) caseA: casea:carrival(s1,q,x); break; caseD: cased:carleave(s1,s2,q,x); break; caseE: casee:flag=0;coutOk,the system will be
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版绿色建筑水电暖安装工程承包合同示范文本
- 2025版商场装修工程环境保护合同
- 2025年新型环保商砼运输服务合同范本
- 2025年水电站电工设施维护承包合同
- 2025年度企业法律风险防范与合规管理咨询服务合同
- 2025年法院审理离婚案件离婚协议书撰写指南及样本
- 2025年度信息安全咨询与技术服务合同
- 2025年新材料研发生产基地厂房转让合同范本
- 2025版私人艺术品买卖合同(含艺术品交易后续跟踪与维护服务)
- 2025租房补贴借款合同专业版范文
- 汽修厂污染防治知识培训课件
- 租房托管班合同(标准版)
- 2025-2026学年苏教版(2024)小学数学二年级上册(全册)教学设计(附目录P226)
- 2025年甘南事业单位笔试试题(含答案)
- 学校2025年秋季学期1530安全教育记录(全学期带内容模板)
- 2025四川农信(农商行)社会招聘800人笔试历年典型考题及考点剖析附带答案详解
- 人教版2024-2025学年七年级数学上册教学计划(及进度表)
- 《传统节日》优秀课件(共27张ppt)
- 四年级上美术教案车(二)_苏少版
- 宁夏普通高中毕业生登记表学生综合素质评价手册完整版
- 康复医学概论
评论
0/150
提交评论