版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华北水利水电学院数据结构实验报告2011-2012学年第二学期,2011级计算机专业班级:* * *学生编号:* * *姓名:* * *姓名实验2堆栈和队列及其应用首先,实验的目的:1.掌握栈的特征(先入后出FILO)和基本操作,如栈入口、栈出口、栈顺序存储结构和链存储结构,以便在实际问题背景下灵活应用。2.掌握队列(先进先出)的特点和基本操作,如队列进入和队列退出,队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题中灵活运用。二、实验内容:1.链接栈建立、栈进入和栈退出操作。2.循环队列的建立、进入和退出操作。3.停车场管理。停车场里只有一条供n辆车通过的狭窄通道,只有一个供汽车
2、进出的大门。停车场内的车辆按照车辆到达时间的顺序从北到南排列(大门在最南端,最先到达的车辆停在停车场的最北端)。如果停车场挤满了n辆车,那么后面的车只能在大门外的人行道上等候。一旦汽车离开,人行道上的第一辆汽车就可以进入。当停车场的一辆车要离开时,进入停车场的那辆车必须先离开停车场,为它让路。汽车离开大门后,其他汽车将按原来的顺序进入停车场。每辆停在停车场的汽车必须根据它离开停车场时停留的时间长短付费。根据上述要求,尝试编制停车场管理模拟程序。实现提示:使用堆栈模拟停车场,使用队列模拟停车场外的服务道路,根据从终端读取的输入数据序列进行模拟管理。每组输入数据包括三个数据项:汽车的“到达”或“离
3、开”信息、汽车的牌照号码和到达或离开的时间。对每组输入数据进行运算后,输出数据为:如果汽车到达,输出汽车在停车场或人行道上的停车位置;如果汽车离开;然后输出汽车停留在停车场的时间和应付费用(停留在便道上的时间不收费)。堆栈由序列结构实现,队列由链表(前导节点)实现。有必要建立另一个堆栈,用于临时停放从停车场出来的车辆,以便让车辆离开,这也是通过顺序存储结构实现的。输入数据根据到达或离开时间排序。堆栈中的每个元素代表一辆汽车,并包含两个数据项:汽车的牌照号码和进入停车场的时间。设n=2,输入数据为:( a ,1,5),( a ,2,10),( d ,1,15),( a ,3,20),( a ,4
4、,25),( a ,5,30),( d ,2,35),( d ,4,40),( e ,0,0)。每组输入数据包括三个数据项:汽车的“到达”或“离开”信息,汽车的牌照号码和到达或离开的时间,其中“a”表示到达;“D”表示离开,“E”表示输入结束。三、实验要求:1.完成算法设计和程序设计,并通过计算机调试。2.写实验报告,提供实验结果和数据。3.写一份算法设计的总结和经验。四、程序源代码:1.#包括#包括typedef结构stnodeint数据;stnode * next链接堆栈;/创建没有标头的堆栈标头节点void InitStack(链接堆栈*ls)ls=空;/进入堆栈,相当于头部插入方法无效
5、推送(链接栈*ls,int x)LinkStack * p;p=(LinkStack *)malloc(size of(LinkStack);p-数据=x;p-next=空;p-next=ls;ls=p。/推出堆栈无效弹出(链接栈*ls)如果(ls=空)返回;LinkStack * p;int x;p=ls。而(p)x=p-数据;ls=p-next;coutnumif(num=000)休息;推送(ls,num)。我;Cout的成功!#定义队列大小100typedef结构sqqueueint数据QueueSize;前部,后部; SqQueue/初始化队列void InitQueue(SqQueu
6、e qu)qu .后=qu .前=0;/团队入口int EnQueue(SqQueue sq,int x)if(sq . rear 1)% QueueSize=sq . front)返回0;sq . rear=(sq . rear 1)% QueueSize;sq . datasq . rear=x;返回1;/离开团队void DeQueue(SqQueue sq)int x;if(sq.front=sq.rear)返回;同时(正面!=sq.rear)sq。front=(sq。前端1)% QueueSize;x=sq。数据sq。前面;coutnumif(num=000)休息;入队(sq,num
7、).我;cout 进队成功!#包括#包括#定义最大值2#定义价格0.05typedef结构节点整数小时;int最小值时间;/时间结点typedef结构节点char num10;/车牌号时间到达;/时间时间休假;卡诺德;/车辆信息结点typedef结构节点卡诺德*栈最大;int top CarStack/顺序栈模拟车站typedef结构QNode/队列卡诺德*数据;QNode *下一步;队列节点;/链队结点类型typedef结构pqrt队列节点*前,*后;/设置头指针尾指针 LinkQueueCar/模拟通道/初始化栈void InitStack(CarStack * cs);/初始化队列(便道
8、)内部初始化队列(LinkQueueCar * QC);/车辆到达到达点(CarStack *回车LinkqueueCar * QC);/车辆离开无效休假(CarStack *输入,CarStack *临时LinkQueueCar * QC);/显示车库信息无效列表(CarStack s,LinkQueueCar w);void main()随机输入,临时;链接队列等待;int ch初始化堆栈(输入);初始化堆栈(临时);初始化队列(等待);而(1)cout 欢迎光临ch;if(ch=1ch=4)休息;开关(ch)案例1:到达(输入,等待);休息;案例2:离开(输入、温度、等待);休息;案例3
9、:列表(输入,等待);休息;案例4:出口(0);休息;默认值:休息;void InitStack(CarStack *cs)cs-top=-1;/初始化栈对于(整数1=0;i堆栈cs-top=空;int Initqueue(LinkqueueCar * QC)/初始化队列/QC=(LinkqueueCar *)malloc(sizeof(LinkqueueCar);这句话不能要?质量控制-前端=(排队节点*)malloc(排队节点大小);if(qc-front!=空)质量控制-前-后=空;/带头结点的质量控制-后部=质量控制-前部;/一定要注意赋值顺序不能反了!返回1;其他返回-1;/打印车站车离开的信息无效打印(卡诺德*p,室内)国际A1、A2、B1、B2;/车辆收费cout 请输入离开时间:/* * : * */ p-休假。小时;而(p-离开。小时到达。小时| | p-休假。23小时)couterror!p-休假。小时;B1=p-休假小时;cout 请输入离开时间的分钟(0-59): ;离开。最小;同时(p-leave.min0|p-leave.min59)couterror!p-离开。最小;B2=p-离开。cout num);cout 其到达时间为:英尺。小时到达。最小离开。离开:小时。最小距离。小时;a2=p-范围。最小;cout 应交费用为: (B1-A1)*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年夏季食品供应与配送合同
- 《冯梦龙文艺思想研究》
- 《髌骨张力板固定系统的有限元分析》
- 《英式橄榄球项目制胜规律的训练学研究》
- 《不同成绩选手华尔兹舞双左疾转动作运动学参数对比分析》
- 第02讲物质的量浓度-2025年高考化学卓越讲义
- 2024年户外广告项目合作合同
- 2024年河北全国客运资格证模拟考试
- 2024年江西客运上岗证多少分算合格
- 专题04幂函数指数函数与对数函数(练习)(原卷版)
- 水工岩石分级及围岩分类
- 基因扩增实验室常用仪器使用课件
- 2023年营养师、营养指导员专业技能及理论知识考试题库(附含答案)
- 斜井敷设电缆措施
- 施工机械设备租赁实施方案
- 牙膏产品知识课件
- 液化气站人员劳动合同范本
- 第一章 教育政策学概述
- 常见土源性寄生虫演示文稿
- 全员育人导师制学生谈话记录
- 了解学前儿童科学领域核心经验
评论
0/150
提交评论