已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华北水利水电学院 数据结构 实验报告20122013学年 第 一 学期 2010级 计算机科学与技术 专业班级:2010136 学号:201013624 姓名: 柴有为 实验二 栈和队列及其应用一、 实验题目:栈和队列及其应用停车场管理二、 实验内容:设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北段),若停车厂内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车迹可开入;停车场内某辆车要离开时,在它之后进入的车连必须先退出车厂为它让路,待该车辆开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车时必须按它停留的时间长短缴纳费用。编写按上述要求进行管理的模拟程序。可以将停车场定义成一个顺序栈s0,便道定义成一个链队列q,而停车场中的某辆车要离开,则在它后面进停车场的车必须让道,让其离开,所以必须有一个临时的顺序栈s1,存放让道的车辆。当有车辆进停车场时,若栈s0不满,则直接进入栈s0;若栈s0满,则进入便道(链队列q)。若有s0中车辆x离开时,先让在x后面进栈的车从s0退栈并进入栈s1中,让x离开并收取停车费(在便道上停留的时间不收费),然后再把s1中所有元素退栈并重新进入s0栈,最后,将链队列q中的队头元素出队并进栈到s0中。三、 程序源代码:#include#include#includetypedef structlong* base;long* top;int stacksize;SqStack;typedef struct QNodelong data;struct QNode* next;QNode,*QueuePtr;typedef structQueuePtr front;QueuePtr rear;int lenth;LinkQueue;bool InitStack(SqStack &S,int capacity)S.base=(long*)malloc(10 * sizeof(long);if(!S.base)exit(1);S.top=S.base;S.stacksize=capacity;return 1;/InitStackbool Push(SqStack &S,long e)if(S.top-S.base=S.stacksize)S.base=(long*)realloc(S.base,(S.stacksize+10)*sizeof(long);if(!S.base)exit(1);S.top=S.base+S.stacksize;S.stacksize+=10;*S.top+=e;return 1;/Pushbool Pop(SqStack &S,long &e)if(S.top=S.base) return 0;e=*-S.top;return 1;/Popbool InitQueue(LinkQueue &Q)Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode);if(!Q.front)exit(1);Q.front-next=NULL;Q.lenth=0;return 1;bool EnQueue(LinkQueue &Q,long e)QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode);if(!p)exit(1);p-data=e;p-next=NULL;Q.rear-next=p;Q.rear=p;Q.lenth+;return 1;bool DeQueue(LinkQueue &Q,long &e)QueuePtr p;if(Q.front=Q.rear)return 0;p=Q.front-next;e=p-data;Q.front-next=p-next;if(Q.rear=p)Q.rear=Q.front;free(p);Q.lenth-;return 1;void park(SqStack &a,LinkQueue &b,int capacity)if(a.top-a.base)=a.top|tp1;p-)Pop(a,e);Push(s,e);Pop(a,e);rt=difftime(n,e);printf(停车时间为%d秒,应交费%lf元n,rt,(double)(rt)*单价/3600);for(p=s.top;ps.base;p-)Pop(s,e);Push(a,e);void WaitingCarEnter(SqStack &a,LinkQueue &b)long e;DeQueue(b,e);Push(a,e);printf(便道车进站n);void SetPrice(double &a)while(true)printf(请设定单价(元/小时):);scanf(%lf,&a);getchar();if(a0)printf(单价为%lf元/小时n,a);break;elseprintf(输入值无效!n);void SetCapacity(int &a)while(true)printf(当前停车场容量为%d,请设定容量:,a);scanf(%d,&a);getchar();if(a0)printf(当前容量为:%dn,a);break;elseprintf(输入值无效!n);void main()char a;int n;int capacity=5;double 单价;SqStack s0,s1;LinkQueue q;InitStack(s0,capacity);InitStack(s1,capacity);InitQueue(q);printf(-停车场管理程序-n);printf(命令:p停车,l取车,g停车数量,e停车场扩容,s重设单价,c清空屏幕n);SetPrice(单价);while(true)printf(请输入命令:);a=getchar();getchar();switch(a)case P:case p:park(s0,q,capacity);break;case L:case l:printf(请输入取车车位号:);scanf(%d,&n);getchar();leave(s0,s1,n,单价);break;case G:case g:printf(当前场内停有%d辆车,便道内有%d辆车n,s0.top-s0.base,q.lenth);break;case S:case s:SetPrice(单价);break;case E:case e:SetCapacity(capacity);break;case C:case c:system(cls);printf(-停车场管理程序-n);printf(命令:p停车,l取车,g停车数量,e设置容量,s重设单价,c清空屏幕n);break;while(q.front!=q.rear&s0.top-s0.basecapacity)WaitingCarEnter(s0,q);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年税收会计模拟考试题及参考答案附解析
- 网络运维常见问题排查
- 2026年技术服务协议合同合同通知的确认流程
- 2025年初中英语阅读理解细节理解题
- 2025年食源性疾病监测培训考核试题(附答案)
- 2026中国蒸汽渗透膜行业发展趋势与应用前景预测报告
- 【7历期中】安徽省池州市2025-2026学年七年级下学期4月期中历史试题
- 2026年禽蛋冷链运输服务合同(餐饮运输)
- 2025年初中生物血液循环途径图解
- 氧化加工合同协议范本
- 箱式变电站接地设计施工方案
- 智算中心PUE优化实施策略
- 手机租赁合同解除协议书
- 第7课 网页的数据组织 课件 2025-2026学年八年级上册信息技术浙教版
- 经胸超声心动图标准切面及标准测量
- DB64∕T 1696-2020 宁夏1:2000地理信息要素规范
- 2025年学校食品安全培训计划
- 2024年高考语文全国二卷(含答案)精校版
- CJ/T 409-2012玻璃钢化粪池技术要求
- 新疆油田公司井控管理规定试题复习测试附答案
- 单独支付药品用药申请表
评论
0/150
提交评论