版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、停车场问题 完整C程序代码1)内容: 设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的在最北端),若停车场内已经停满 n辆车,那么后来的车只能在场外等候,一旦有车开走,则等候在第一位的车即可开入(这是一个队列设长度为m);当停车场内某辆车需要开出,则在它之后的车辆必须给它让道,当这辆车驶出停车场后,其他车辆按序入栈。每辆车按时间收费。 2)要求: 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入数据的序列进行模拟管理。每一组输入数据包括三个数据:汽车的“到达”(A表示)或“离去”(D
2、表示)信息,汽车标识(牌照号)以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或者便道上的停车位置;若是车辆离去,则输出汽车在停车场停留的时间和应缴纳的费用(便道上不收费)。栈以顺序结构实现,队列以链表结构实现。#include#include#define pmax 3 /定义停车场的最大容车量为3#define price 2 /停车单价为2static int flag=0; /全局变量,用来记录停车场车的数量struct parkcar /定义车辆的结构体long num;int time;struct parkcar*next;*hea
3、d,*rear; struct parkcar pcpmax; /创建停车场的结构体数组struct parkcar tcpmax; /创建用来缓存停车场出来的车辆的结构体数组struct parkcar *inqueue(long carnum,int atime); /声明入队列函数,让车辆进入候车区void arrive(void); /声明到达函数void leave(void); /声明离开函数void display_P(void); /声明显示停车场车辆信息的函数void display_W(void); /声明显示侯车区车辆信息的函数int main() head=NULL;
4、/初始化队列头指针和尾指针rear=NULL;int state=0;printf(t=Parkcar Menu=n); /输出停车菜单printf(t price:2n);printf(tinput staten); /通过先输入状态(如A),后执行相应函数 printf(t A arriven); printf(t D leaven); printf(t P display park_carn); printf(t W display wait_carn);printf(t E quitn);doprintf(input:n);scanf(%c,&state);fflush(stdin);
5、switch(state) /通过先输入状态(如A),后执行相应函数case A:arrive();break; case D:if(pcflag-1.num=NULL) /如果停车场为空则输出为空 printf(Park is empty!n); else leave();break;case P:display_P();break;case W:display_W();break;case E:break;default:printf(error message,input again!n);while(state!=E); /当输入E则退出return 0;void arrive(voi
6、d) long carnum; int atime;printf(please input carnumber and arrive time!n);scanf(%ld %d,&carnum,&atime);fflush(stdin);if(flag!=pmax) /如果停车场未满,则入停车场pcflag.num=carnum;pcflag.time=atime;+flag;else inqueue(carnum,atime); /否则进候车区struct parkcar *inqueue(long carnum,int atime) /以尾插法建立候车区的队列链表struct parkcar
7、*p;p=(struct parkcar*)malloc(sizeof(struct parkcar);p-num=carnum;p-time=atime;if(head=NULL)head=p;else rear-next=p;rear=p;rear-next =NULL;return head;void leave(void)long carnum; int ltime,dtime; /离开时间,停车时间int save=0;int i=1,flag0; flag0=flag; /flag0用来存储刚调用 离开函数 时flag的值struct parkcar*p;printf(please
8、 input carnumber and leave time!n);scanf(%ld %d,&carnum,<ime);fflush(stdin);while(pcflag-1.num !=carnum) /从栈顶往下找要离开的那辆车 tcsave.num=pcflag-1.num;tcsave.time =pcflag-1.time ; tcsave.next =pcflag-1.next ;if(flag=1&pc0.num !=carnum) /如果找到栈底都没有这辆车,则返回,并将存储着刚调用离开函数时flag的值,即flag0重新 /赋值给flag,避免在没有车辆离开的情况下
9、对全局变量flag进行修改而导致错误printf(This car is not founded!n);flag=flag0;return;flag-;save+;dtime=ltime-pcflag-1.time ; /停车时间的计算if(dtimenum;pcflag.time =ltime;pcflag.next =p-next ;flag+;printf(t%ldcar in park,arrive time:%dn,p-num ,ltime); /显示从候车区进停车场的车辆车牌号和进入时间head=head-next;free (p);void display_P(void) /从栈顶往栈底显示停车场的车辆信息 int flag1;flag1=flag; /用flag1记录此时的flag,避免对全局变量进行操作printf(tpark_carnum arrive_timen);fflush(stdin);while(flag1)!=0)printf(t%ld %dn,pcflag1-1.num,pcflag1-1.time);flag1-;void display_W(void) /从队首往队尾显示候车区的车辆信息 struct parkcar*w;w=head;printf(twait_carnum arrive_timen);whil
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年人格阴暗面测试题及答案
- 2026年护理理论培训测试题及答案
- 2025危化品泄漏应急处置持证上岗培训教案 考证专用
- 2022年党群宣传岗面试押题汇编及逐字稿答案完整版
- 2026年冬季安全生产措施测试题及答案
- 2026年滑雪五级理论考试一次上岸专属习题集附答案
- 黑龙江哈尔滨市萧红中学校七年级(下)2026年3月份教与学质量监测道德与法治(含解析)
- 膀胱癌患者护理
- 实习的安全协议书
- 夫妻签订结婚协议书有效
- 幼儿园年度业务活动开展情况总结
- 家装渠道合同协议书
- (高清版)JT∕T 1402-2022 交通运输行政执法基础装备配备及技术要求
- HG-T 2521-2022 工业硅溶胶介绍
- JTT495-2014 公路交通安全设施质量检验抽样方法
- 初中数学基于核心素养导向的大单元教学设计(共50张)
- 从班会课到成长课程德育教师的班会课微革命
- 《诚实守信,立身之本》主题班会课件
- 王力语言学史(三)
- 干制食用菌HACCP计划
- 熄焦塔脚手架专项工程施工方案
评论
0/150
提交评论